想来每年需要更换网站的SSL证书,都得谷歌一大堆。今年终于决定写一篇文章给未来的我作为参考。本文将记述今年更换网站SSL证书的全流程。
忘了什么时候开始的了,SSL证书的最长有效期变成了1年,这也就意味了我必须每年都要重新签发一个SSL证书。签发证书时不推荐使用原有的CSR,而是建议每次使用全新的。
所以使用如下命令生成一个新的CSR,关于密钥长度,我使用的CA说2048位的密钥足够安全,至少到2030年以前都是安全的,但是我的自签证书都是4096位的,网站用2048位,显得没有牌面,所以这次我用了4096位的密钥:
openssl req -new -newkey rsa:4096 -nodes -keyout server.key -out server.csr
这里的国家名和省市名字照常写就完了,我用的CA机构是不会把这些信息放在普通域名证书里面的(如果你是申请的机构或企业证书,这块可能要认真写)。至于机构名和部门什么的,我是个人网站证书,写NA
就可以了。注意Common Name要写带有通配符的域名,也就是FQDN,我的是*.skyblond.info
。命令完成之后就会得到一个key文件,这是证书的私钥,还有一个csr文件,这个是证书请求文件,把里面的内容复制给CA就可以签发证书了。
稍后经过DNS验证后,CA就会把签发好的域名发送到你的邮箱里面,但是这个时候还不能直接用。邮箱里会收到一个zip文件,里面有两个文件:
- 后缀名为
crt
的证书文件,这个是经过CSR文件签发来的证书 - 后缀名为
ca-bundle
的文件,里面有两份证书,这份文件提供了从一个众所周知的CA证书到实际签发域名证书的CA证书的信任链
关于第二点,翻译成人话就是:根CA的证书是众所周知的,因为操作系统会内置他们的证书,而实际给你签发证书的CA可能是个小CA,并不一定众所周知,对于操作系统不认识他们的情况,第二个文件能够提供一个从未知到已知的证明。即:根CA是可信的,根CA签发了小CA的证书,因此小CA也是可信的,而小CA签发了我们的域名,因此我们的域名也是可信的。
但是实际设置Nginx的时候,证书只有一个可选,所以我们需要把两个文件打包成一个,好在这个没什么技术含量,复制粘贴就行。把第一个crt文件的内容复制粘贴到ca-bundle文件的开头,或者使用命令行:
cat STAR_skyblond_info.crt STAR_skyblond_info.ca-bundle >> STAR_skyblond_info_chain.crt
此时,server.key
和STAR_skyblond_info_chain.crt
就可以用在各种各样的网页服务器用于提供SSL证书了。
-全文完-
【歪门邪道】重新签发网站SSL证书 由 天空 Blond 采用 知识共享 署名 - 非商业性使用 - 相同方式共享 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 https://skyblond.info/about.html 处获得。
草,前一阵搞智慧学工的ssl证书谷歌半天,这下以后有参考了@(你懂的)
害,这篇文章不全,建议参考这个
https://github.com/hurui200320/springboot-grpc-demo/blob/master/ssl.md
ssh刚出来的时候,为了所谓的“面子”我还傻不溜秋地买了两年付费的,,后来后悔了,票子五六张没有了,,再后来要么不用,要么用免费的。
第二个文件能够提供一个从未知到已知的整明,“整”才明哈?不“整”不明。
害,打错了,是从未知到已知的“证明”。第二个文件本质是提供一个可信的证书链,让客户端从自己已知的证书出发,一步一步信任它原本不认识的证书。
不过我觉得CA还是真好赚钱,不谈OV(组织)和EV(企业)的认证工作,单就DV(个人域名),实际上都不需要人参与,CA那边用程序就把钱赚了,而且DV也不要求买家证明自己的身份,只需要证明自己拥有这个域名就行了,而这个证明过程完全是买家自己操作,而CA只需要访问一个域名,验证一个结果就行了。这真是太好赚钱了,不过需要一些比较认真的应用,或者用到证书的地方比较多的情况下,自己买证书还是省事一些。我买的五年期的证书,大约花了200刀多一些,以前我也用LetsEncrypt的免费证书,但是那个需要每月更换,对于长期跑的服务来说,就得每月重启一下来加载新的证书,对于服务本身还是挺有影响的。
不过抛开CA,自己服务使用的话其实完全可以用自签发的证书。
跑在最前面的几个除了掉到沟里的以外都把钱赚了。@(呵呵)