今天公司一台老服务器上的IIS6上的godaddy证书到期,要更新一下,折腾了2小时,小计一下,以防忘记。
windows机器上的IIS6上的SSL证书和linux服务器上的openssl上的证书有一点点区别,它的key私钥文件是隐藏的。如果要更新,要使用IIS中的证书向导。
首先是到godaddy去续费
更新IIS6上的 SSL证书
具体操作方式如下:
- 在IIS管理器中,右击站点–属性–目录安全–点击服务器证书–打开IIS证书向导:
- 选择更新当前证书
- 默认用准备证书请求,生成一个证书请求文件,把里面的内容用记事本黏贴出来。
- 在godaddy官网登录,进入对应域名的证书下,选择重新生成密钥和管理:
- 然后,把黏贴的请求内容贴地去,保存并提交:
- 最后,在godaddy重新签发证书后,下载IIS证书,并重新打开IIS证书向导,选择第一项继续证书更新操作,最后导入新的IIS证书文件(.crt)的那个文件,完成证书续费更新。在IIS属性–目录安全,点击查看证书,可以查看到证书有效期是否更新到了新的日期。
把windows 的pfx 格式证书转成linux上nginx可用的pem证书
讲讲如果这个证书是一个通配符证书的话,如何把windows机器上的这个证书连私钥一起给导出来,用在linux服务器的nginx上(因为通配符证书可以用在一个域的多个子域名上,有的子域名可能是linux服务器上的应用)
- 在IIS管理器中,右击站点–属性–目录安全–点击服务器证书–打开IIS证书向导:
用IIS证书向导导出pfx格式的证书文件(包括私钥在里面喔,可以加个密码)
把导出的文件在linux服务器上用openssl命令转成pem格式。
1
2
3
4
5# certificate.pfx 为导出的pfx文件
# 跑下面的命令,输入密码后,就可以了
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Enter Import Password:
MAC verified OK
PXF转PEM后,certificate.cer文件包含认证证书和私钥,需要把它们分开存储才能使用。把 certificate.cer文件中,—-BEGIN PRIVATE KEY—- 到 —-END PRIVATE KEY —-的内容存成 youdomain.name.com.key文件(.key的私钥文件); 把certificate.cer文件中,—-BEGIN CERTIFICATE—- 到 —-END CERTIFICATE —-的内容存成 youdomain.name.com.crt文件(.crt证书文件),记得把中级证书文件的内容也加在 youdomain.name.com.crt文件内容后面。最后按正常的nginx的ssl配置就可以了。
把linux上nginx证书转成windows上可用的pfx证书
这次是反过来,把linux上nginx证书转成windows上可用的pfx证书。为什么会有这个需求呢?因为godaddy默认是自动更新继费你的证书。在godaddy上下载nginx用的crt证书后,可以用下面的命令生成一个windows用的fpx证书,然后导入到windows服务器上,给IIS使用。1
openssl pkcs12 -export -out xxx.com.20191212.pfx -inkey xxx.com.key -in xxx.com.crt