自签 https 证书

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

如果使用了负载均衡(nginx或apache),则更为简单,只需要在负载均衡中配置证书就完成了,不需要以下步骤,使用 apache 作为负载均衡可参考 apache 配置 https

背景知识

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

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

说明

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

制作CA根证书

  1. 创建私钥 openssl genrsa -out ca/ca-key.pem 1024image
  2. 创建证书请求 openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config openssl.cnf
    自签 https 证书_第1张图片
  3. 生成CA自签名证书 openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
    在这里插入图片描述

制作服务器证书

  1. 用 java 自带的 keytool工具生成密钥 keytool -genkey -alias example -validity 365 -keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456 -keystore example.jks
    自签 https 证书_第2张图片
  2. 用keytool工具生成证书请求 keytool -certreq -alias example -sigalg MD5withRSA -file example.csr -keypass 123456 -keystore example.jks -storepass 123456
    在这里插入图片描述
  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
    在这里插入图片描述

向 keystore 密钥库中导入证书

  1. 导入CA证书 keytool -import -v -trustcacerts -keypass 123456 -storepass 123456 -alias root -file ca/ca-cert.pem -keystore example.jks
    自签 https 证书_第3张图片
  2. 导入服务器证书 keytool -import -v -trustcacerts -storepass 123456 -alias example -file example.pem -keystore example.jks
    在这里插入图片描述
  3. 单独导出 CA 作为信任证书 keytool -import -alias example-ca -trustcacerts -file ca/ca-cert.pem -keystore exampletrust.jks
    自签 https 证书_第4张图片

至此会生成 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
    在这里插入图片描述
  2. 双击ca.p12安装证书为受信任的根证书颁发机构
  3. 打开ie浏览器,在 internet 选项``内容清除ssl状态,重启浏览器再重新访问,就不会再有不信任的提示。

apache 配置 https 参考 apache 配置 https

你可能感兴趣的:(开发总结)