欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI
应用服务器HTTPS双向认证配置说明
双向认证是指客户端和服务器端都需要验证对方的身份。单向认证的过程是客户端从服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。与单向认证不同的是,双向认证过程中,客户端除了需要从服务器端下载服务器的公钥证书进行验证外,还需要把客户端的公钥证书上传到服务器端给服务器端进行验证,等双方都认证通过了,才开始建立安全通信通道进行数据传输。
整个过程参考下图:
在应用服务器中,有两个比较重要的文件:keystore.jks和cacerts.jks,其中keystore.jks是应用服务器的密钥库文件,cacerts.jks是应用服务器的证书库文件。应用服务器配置文件domain.xml中相关配置如下:
...
默认情况下,应用服务器支持HTTPS的单向认证,应用程序部署后就可以使用HTTPS方式进行访问,无需任何配置。要支持HTTPS的双向认证,则需要保证服务端和客户端可以互相验证。
我们需要准备如下证书及密钥库文件:
文件 | 说明 |
root.jks | 根证书密钥库 |
root.cer | 根证书,用于认证客户端证书及安装到客户端 |
keystore.jks | 服务端密钥库 |
s1as.cer | 服务端证书,使用根证书root.cer认证后的证书 |
pas-instance.cer | 应用服务器证书,用于服务器自己的HTTPS认证 |
client.p12 | 客户端密钥库 |
client.cer | 客户端证书 |
其中,根证书root.cer、服务端证书s1as.cer、应用服务器证书pas-instance.cer需要导入到keystore.jk保证应用服务器信任这些证书;根证书root.cer、服务端证书s1as.cer、客户端证书client.cer需要导入到cacerts.jks用于客户端和服务端互相认证。另外,根证书root.cer、客户端密钥库需要安装到客户端(如浏览器端,不同系统的安装方式可能不同)。
生成根证书密钥库root.jks
keytool -genkeypair -v -keystore root.jks -storetype pkcs12 -storepass changeit -alias root -keyalg RSA -keysize 2048 -validity 3650 -dname "CN=localhost-instance,OU=PAS,O=Primeton,L=Shanghai,ST=Shanghai,C=CN"
...
keytool -exportcert -file root.cer -keystore root.jks -storepass changeit -alias root
生成应用服务器密钥库keystore.jks
keytool -genkeypair -v -keystore keystore.jks -storetype pkcs12 -storepass changeit -alias s1as -keyalg RSA -keysize 2048 -validity 3650 -dname "CN=localhost-instance,OU=PAS,O=Primeton,L=Shanghai,ST=Shanghai,C=CN"
...
keytool --importcert -v -trustcacerts -keystore cacerts.jks -alias s1as -file s1as.cer -keypass changeit -storepass changeit
生成pas-instance密钥库keystore.jks
...
keytool --importcert -v -trustcacerts -keystore cacerts.jks -alias pas-instance -file pas-instance.cer -keypass changeit -storepass changeit
生成客户端密钥库client.p12
keytool -genkeypair -v -keystore client.p12 -storetype pkcs12 -storepass changeit -alias client -keyalg RSA -keysize 2048 -validity 3650 -dname "CN=localhost-instance,OU=PAS,O=Primeton,L=Shanghai,ST=Shanghai,C=CN"
...
keytool --importcert -v -trustcacerts -keystore cacerts.jks -alias client -file client.cer -keypass changeit -storepass changeit
替换密钥库和证书库
将密钥库文件keystore.jks和证书库文件cacerts.jks拷贝到$APPSERVER_HOME/pas/domain/domain1/config目录下,覆盖同名文件。
...
重启应用服务器
以上配置完成之后,重启应用服务器使配置生效。
安装根证书root.cer
鼠标双击root.cer安装根证书(不同系统的安装方式可能不同)。
...
⚠️注意:如果没有安装客户端密钥库,浏览器不会弹出选择证书的提示。
选择证书后,可以正常访问应用程序页面。
使用curl方式验证HTTPS的双向认证,需要使用client.key和client.cer,因此需要生成这两个文件。
...