这里,我们使用OpenSSL生成自己CA证书,然后使用它来签发Server端和Client端的证书,该CA证书充当了第三方权威CA的角色。
Step1,创建文件夹$OpenSSL_Home\bin\ca,打开CMD将工作目录指向$OpenSSL_Home\bin。输入如下命令创建私钥:
D:\Server\OpenSSL-Win32\bin>openssl genrsa -out ca/ca-key.pem 1024
生成私钥文件ca-key.pem。
Step2,创建Certificate Secure Request证书请求文件,
D:\Server\OpenSSL-Win32\bin>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
生成CSR文件ca-req.csr。
Step3,生成自签名CA证书。使用私钥ca-key.pem来签署CSR文件ca-req.csr,
D:\Server\OpenSSL-Win32\bin>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
生成自签名CA证书ca-cert.pem。
Step4,导出CA证书为浏览器支持的.p12格式,
D:\Server\OpenSSL-Win32\bin>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca-root.p12
生成.p12格式的CA证书ca-root.p12备用。
这里,我们使用新制作的CA证书来签发服务器端的证书serverkey,然后将签发后的证书导入服务器端密钥库tomcat.jks。
Step1,创建服务器端证书的CSR文件,
C:\Documents and Settings\dinstone>keytool -certreq -alias serverkey -file server.csr -keystore tomcat.jks -storepass 123456
生成CSR文件server.csr
Step2,使用CA证书来签发server.csr,将server.csr拷贝到$OpenSSL_Home\bin\server目录下,执行如下命令,
D:\Server\OpenSSL-Win32\bin>openssl x509 -req -in server/server.csr -out server/
server-cert.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAserial ca/ca-cert.srl
-CAcreateserial -days 3650
Loading 'screen' into random state - done
Signature ok
subject=/C=CN/ST=beijing/L=beijing/O=software/OU=bluesky/CN=192.168.8.221
Getting CA Private Key
生成CA签发的证书server-cert.pem
Step3,将CA证书ca-cert.pem导入服务器端密钥库tomcat.jks。执行如下命令,
C:\Documents and Settings\dinstone>keytool -importcert -alias ca -v -file ca-cer
t.pem -keystore tomcat.jks -storepass 123456
所有者:CN=CA Root, O=Certification Authentication Center, L=haidian, ST=Beijing,
C=CN
签发人:CN=CA Root, O=Certification Authentication Center, L=haidian, ST=Beijing,
C=CN
序列号:f8c56c50b55fa6f5
有效期: Tue Jun 22 17:32:53 CST 2010 至Fri Jun 19 17:32:53 CST 2020
证书指纹:
MD5:5A:E6:50:CE:C5:63:CA:DD:0E:01:99:9F:1B:A7:23:0F
SHA1:E4:68:4F:F7:FE:B5:58:30:16:DD:49:32:CD:B2:AC:21:BA:6D:32:33
签名算法名称:SHA1withRSA
版本: 1
信任这个认证? [否]: y
认证已添加至keystore中
[正在存储 tomcat.jks]
Step4,将CA签发的服务器端证书server-cert.pem导入服务器端密钥库tomcat.jks。执行如下命令,
C:\Documents and Settings\dinstone>keytool -importcert -alias serverkey -v -file
server-cert.pem -keystore tomcat.jks -storepass 123456
认证回复已安装在 keystore中
[正在存储 tomcat.jks]
Step5,查看服务器端证书。如果能看到如下信息,则表示导入成功。
C:\Documents and Settings\dinstone>keytool -list -v -keystore tomcat.jks -storep
ass 123456
Keystore 类型: JKS
Keystore 提供者: SUN
您的 keystore 包含 2 输入
别名名称: ca
创建日期: 2010-6-23
输入类型: trustedCertEntry
所有者:CN=CA Root, O=Certification Authentication Center, L=haidian, ST=Beijing,
C=CN
签发人:CN=CA Root, O=Certification Authentication Center, L=haidian, ST=Beijing,
C=CN
序列号:f8c56c50b55fa6f5
有效期: Tue Jun 22 17:32:53 CST 2010 至Fri Jun 19 17:32:53 CST 2020
证书指纹:
MD5:5A:E6:50:CE:C5:63:CA:DD:0E:01:99:9F:1B:A7:23:0F
SHA1:E4:68:4F:F7:FE:B5:58:30:16:DD:49:32:CD:B2:AC:21:BA:6D:32:33
签名算法名称:SHA1withRSA
版本: 1
*******************************************
*******************************************
别名名称: serverkey
创建日期: 2010-6-23
项类型: PrivateKeyEntry
认证链长度: 2
认证 [1]:
所有者:CN=192.168.8.221, OU=bluesky, O=software, L=beijing, ST=beijing, C=CN
签发人:CN=CA Root, O=Certification Authentication Center, L=haidian, ST=Beijing,
C=CN
序列号:f0b21ac36d7ce6ac
有效期: Wed Jun 23 09:32:01 CST 2010 至Sat Jun 20 09:32:01 CST 2020
证书指纹:
MD5:E4:F2:48:39:7E:15:F9:64:F6:2C:BA:E1:6A:AF:AF:E1
SHA1:E4:78:0A:84:C2:84:42:A0:52:1E:39:99:35:9F:F1:7F:62:A6:9A:DE
签名算法名称:SHA1withRSA
版本: 1
认证 [2]:
所有者:CN=CA Root, O=Certification Authentication Center, L=haidian, ST=Beijing,
C=CN
签发人:CN=CA Root, O=Certification Authentication Center, L=haidian, ST=Beijing,
C=CN
序列号:f8c56c50b55fa6f5
有效期: Tue Jun 22 17:32:53 CST 2010 至Fri Jun 19 17:32:53 CST 2020
证书指纹:
MD5:5A:E6:50:CE:C5:63:CA:DD:0E:01:99:9F:1B:A7:23:0F
SHA1:E4:68:4F:F7:FE:B5:58:30:16:DD:49:32:CD:B2:AC:21:BA:6D:32:33
签名算法名称:SHA1withRSA
版本: 1
*******************************************
*******************************************
Step1,将生成的.p12格式的CA证书ca-root.p12导入浏览器的受信任的根证书颁发机构。
CA根证书导入
Step2,测试Https,启动Tomcat。访问https://localhost:8443/,提示有不安全的证书如下:
安全警报
证书信息
我们看到该证书由可信任的安全机构签发,问题1解决。而访问https://192.168.8.221:8443/,直接看到Tomcat的欢迎页面而不会有安全警报,同时在状态栏右侧可以看到浏览器已经与服务器建立安全连接,信息如下:
SSL连接
联系客服
微信登录中...
请勿关闭此页面