续接上一篇 https 以及内网如何使用 的理论知识,这次来做个实践,用 opensslkeytool 为 weblogic 生成自签证书,并让浏览器信任。

背景知识

  • 什么是单向认证:只需要客户端认证服务端是否正确;
  • 什么是双向认证:需要客户端和服务器端互相认证,在单向认证的基础上,服务器也需要认证客户端。在生成证书这一步也需要为客户端生成证书。

因为大部分情况下(除比较安全的应用如涉及到支付、银行U盾等)不需要双向认证,所以这里只做单向认证就可以了。

说明

  1. 实践中我使用的是cygwin自带的 openssl,如果没有可自行下载 OpenSSL,解压后用 cmd 进入该目录;
  2. 在当前目录下创建 ca 文件夹,用来存储生成的 CA 证书;
  3. 操作过程中涉及到的密码均为123456,证书名称为example,可自行替换;
  4. 示例签证的时间是3650天,即10年。

制作CA根证书

  1. 创建私钥 openssl genrsa -out ca/ca-key.pem 1024自签 https 证书
  2. 创建证书请求 openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config openssl.cnf
    自签 https 证书
  3. 生成CA自签名证书 openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
    自签 https 证书

制作服务器证书

  1. 用 java 自带的 keytool工具生成** keytool -genkey -alias example -validity 365 -keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456 -keystore example.jks
    自签 https 证书
  2. 用keytool工具生成证书请求 keytool -certreq -alias example -sigalg MD5withRSA -file example.csr -keypass 123456 -keystore example.jks -storepass 123456
    自签 https 证书
  3. 根据证书请求,用CA签证,生成服务器证书openssl x509 -req -in example.csr -out example.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -days 365 -set_serial 1
    自签 https 证书

向 keystore **库中导入证书

  1. 导入CA证书 keytool -import -v -trustcacerts -keypass 123456 -storepass 123456 -alias root -file ca/ca-cert.pem -keystore example.jks
    自签 https 证书
  2. 导入服务器证书 keytool -import -v -trustcacerts -storepass 123456 -alias example -file example.pem -keystore example.jks
    自签 https 证书
  3. 单独导出 CA 作为信任证书 keytool -import -alias example-ca -trustcacerts -file ca/ca-cert.pem -keystore exampletrust.jks
    自签 https 证书

至此会生成 example.jks 和 exampletrust.jks 两个文件,将其复制到 webloigc 域的根目录下,启用 weblogic 的 ssl 功能并引用证书配置。

客户端安装CA证书(解决浏览器端无法识别证书的问题)

  1. 生成浏览器证书openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12
    自签 https 证书
  2. 双击ca.p12安装证书为受信任的根证书颁发机构
  3. 打开ie浏览器,在 internet 选项``内容清除ssl状态,刷新再重新访问,就不会再有不信任的提示。

相关文章: