今天在配置家里的私人服务器时想配置https,想到干脆把自己在宝塔面板一键申请的Let's Encrypt 泛域名SSL证书迁移到自己私人服务器,然后给自己私人服务器绑定一个子域名,直接使用已有证书,岂不美哉。结果没想到,自己的私人服务器是Windows Server 2019,web服务器使用的IIS,在配置SSL证书时遇到了麻烦:

IIS 导入证书

这是个啥玩意啊, .pfx是个啥格式啊?

于是开始向万能的互联网求救,终于找到了解答:在Linux服务器下用openssl可以将已有的证书导出为IIS一键导入的.pfx格式,那么开始动手吧!

[mark]先提前声明,本文背景是在宝塔Linux面板上已有SSL证书,要将其导出至Windows Server 系统的IIS服务器中,如果背景是其他情况则本文不一定适用![/mark]

具体流程

第1步 导出证书为.pfx格式

方法一(推荐)

SSH或者SFTP进入到这个目录:

/www/server/panel/vhost/ssl/你的已有证书的网站名称

目录中会有三个文件:证书文件夹内容
其中的

fullchain.pem

privkey.pem

就是我们要的证书文件,前者是证书,后者是私钥。将这两个文件拷贝至你openssl的安装目录,我这里阿里云CentOS7系统镜像自带openssl,目录在 /usr/local/openssl 目录下,将上述两个文件拷贝至这里,然后ssh执行以下命令

openssl pkcs12 -export -out iiscert.pfx -inkey privkey.pem -in fullchain.pem

回车后,会提示你输入一个导出密码,输入并记住他,等下导入时要用,回车

不出意外,该目录下就会生成一个iiscert.pfx文件,将它保存至我们的WIN服务器。

方法二

打开宝塔面板,并打开网站选项卡,点开你要转移SSL证书的网站,打开SSL选项卡,切换至你已有的证书标签页,RT

宝塔面板SSL配置页

将左侧的文本复制下来,新建一个privkey.pem文件,粘贴进去,新建一个fullchain.pem文件,将右侧内容粘贴进去。保存,将这两个文件拷贝至openssl的安装目录下,一般是 /usr/local/openssl 下,然后ssh执行

openssl pkcs12 -export -out iiscert.pfx -inkey privkey.pem -in fullchain.pem

回车后,会提示你输入一个导出密码,输入并记住他,等下导入时要用,回车

不出意外,该目录下就会生成一个iiscert.pfx文件,将它保存至我们的WIN服务器。

第2步 在IIS中导入证书

在IIS服务器主页打开服务器证书菜单,点击右侧的 导入 ,证书文件选择你刚上传的.pfx文件,密码输入刚才导出证书时设置的密码,下面的选项不用动他,保持即可!

此时,这个证书就被导入在IIS中了

要启用https,在IIS中打开你要开启https的网站,在绑定中新增https绑定,域名要用证书对应的域名,(当然你也可以不绑定域名,只是如果不会证书对应的域名访问浏览器会在访问网站时有警告)

端口默认443不用动他,下方的证书就选择我们刚才导入IIS的证书,确定,保存,大功告成!

Last modification:March 16, 2020
觉得有帮助的话,打赏一个呗~