编写server.ini文件
Server.ini内容如下:
#开始
subjectAltName = @YNBTN
extendedKeyUsage = serverAuth
[ynbtn]
# 域名,如有多个用DNS.2,DNS.3…来增加
DNS.1 =
# IP地址 多ip地址,均可使用同一套根证书和服务器证书
IP.1 = 10.20.0.17
IP.2 = 10.2.3.30
IP.3 = 10.20.2.11
IP.4 = 10.20.22.11
生成根证书和服务器证书
执行以下命令(前提是安装openssl,本例为3.3版。)
openssl req -x509 -newkey rsa:2048 -out CA.cer -outform PEM -keyout CA.pvk -days 20000 -verbose -nodes -sha256 -subj "/CN=YNBTN CA"
openssl req -newkey rsa:2048 -keyout Server.pvk -out Server.req -subj /CN=10.20.0.17-sha256 -nodes
openssl x509 -req -CA CA.cer -CAkey CA.pvk -in Server.req -out Server.cer -days 20000 -extfile Server.ini -sha256 -set_serial 0x1111
得到如下文件
ca.cer
ca.pvk
server.pvk
server.req
server.cer
在服务器端安装服务器证书
在服务器端安装服务器端证书和密钥,但无须安装根证书。
服务器端为windows,须将服务器端证书和密钥转换为pfx.执行如下命令
openssl pkcs12 -export -out server.pfx -inkey server.pvk -in server.cer
要求输入密码时可直接回车。
此时生成server.pfx文件,但该文件在在windows server 2016无法导入,始终提示密码不正常,据说在2016以上版本可以使用。
对此情况,可执行如下增加了参数的命令重新生成server.pfx,此pfx可在windows server 2016上正常导入。
openssl pkcs12 -macalg SHA1 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -out server.pfx -inkey server.pvk -in server.cer
将生成的server.pfx复制到windows服务器,双击,将其导入到“本地计算机\个人”中,中间要求输入密码,如先前未设可直接下一步,如设则输入密码。
绑定服务器证书
在iis管理器中,选择相关网站,在右侧点击”绑定“进行绑定。选择名为“10.20.0.17-sha256”的证书,在绑定证书时会提示“证书链中的一个或多个中间证书丢失。要解决此问题,请确保安装了所有中间证书...",无须理会,当然也可将生成的ca.cer导入到”本地计算机\受信任的根证书颁发机构“,但意义不大。
客户端安装根证书
在windows客户端导入ca.cer到本地计算机\受信任的根证书颁发机构。重启浏览器,即可通过https://10.20.0.17等形式访问网站了。
参考文献
内网使用openssl自签名证书开启https连接,同时解决chrome浏览器中的不安全访问
https://blog.csdn.net/weixin_44021888/article/details/140175819
导入pfx到IIS Windows Server 2016 -指定的网络密码不正确
https://www.saoniuhuo.com/question/detail-2195591.html