背景介绍
我的需求是在IIS上部署SSL证书,然后可以 https://example.com 正常访问
如果您不是迫不得已,建议使用nginx等web服务器已获得顺畅的https服务
nginx SSL 证书配置如下
listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/nginx/cert/fullchain.pem; ssl_certificate_key /etc/nginx/cert/privkey.key;
环境介绍以及依赖版本介绍
你已经通过其他途径申请到了
example.com
的SSL证书,证书包含两个文件fullchain.pem
pem证书文件privkey.pem
pem私钥文件
windows服务器(我的是windows10),已经安装IIS
这里假设您已经熟练操作IIS
- 选中IIS中的网站,在右侧Bindings...中添加 https://example.com , 然后在下面选中
您导入的证书接口
您导入的证书接口
此时还不可用,本文的目的就是导入证书,然后在IIS中的证书选择中可以选择到导入的证书。
您已经在您的域名管理的DNS管理中正确添加了DNS解析记录
操作方法
方案1
如果您的电脑已经安装
openssl
, 则直接转换证书即可
# 测试您的电脑是否安装openssl
openssl help
Standard commands
asn1parse ca ciphers cms
crl crl2pkcs7 dgst dhparam
dsa dsaparam ec ecparam
enc engine errstr gendsa
genpkey genrsa help list
nseq ocsp passwd pkcs12
pkcs7 pkcs8 pkey pkeyparam
pkeyutl prime rand rehash
req rsa rsautl s_client
s_server s_time sess_id smime
speed spkac srp storeutl
ts verify version x509
# 直接转换证书
openssl pkcs12 -export -out example.com.pfx -inkey privkey.pem -in fullchain.pem
# 需要输入密码 xxxxxx
文件
example.com.pfx
即使转换的 windowws 的证书,可以导入IIS中
方案2
如果您的电脑未安装openssl,则可以使用python代码进行证书转换
代码如下
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024-03-25 15:26
# @Author : Jack
# @File : 02.convert_ssl_pfx
"""
02.convert_ssl_pfx
pip install pyOpenSSL==23.2.0
"""
from OpenSSL import crypto
def main(full_chain_path, key_path, password, pfx_result):
with open(full_chain_path, 'rb') as f:
full_chain_data = f.read()
with open(key_path, 'rb') as f:
key_data = f.read()
cert = crypto.load_certificate(crypto.FILETYPE_PEM, full_chain_data)
key = crypto.load_privatekey(crypto.FILETYPE_PEM, key_data)
pkcs12 = crypto.PKCS12()
if cert and key:
pkcs12.set_certificate(cert)
pkcs12.set_privatekey(key)
with open(pfx_result, 'wb') as f:
f.write(pkcs12.export(passphrase=password))
if __name__ == '__main__':
main(r'fullchain.pem', r'privkey.pem',
b'xxxxxx', r'result.pfx')
特别注意事项
pyOpenSSL==23.2.0 , 23.2.0之后的版本已经移除 PKCS12
Removed OpenSSL.crypto.loads_pkcs7 and OpenSSL.crypto.loads_pkcs12 which had been deprecated for 3 years.
参见
导入证书,使IIS可以选择使用
把生成的
example.com.pfx
或result.pfx
复制到windows机器上, 双击文件,选择本地用户
,下一步,下一步,下一步...看到导入成功
提示即可。
除本地用户
选择外, 其他选项默认即可,需要密码的话,请输入上面配置的密码xxxxxx
。
此时在进入IIS中选择证书的话,您就可以选择到您自己的证书了
测试
浏览您的网站 https://example.com 发现可以正常访问。