更换SSL证书
2020-06-23 本文已影响0人
本然酋长
前言
今天公司的官网又过期了。然后发现我居然没有记录更换ssl证书的博客,今天就把这个过程记录下来吧。
申请证书
ssl证书大部分都是要花钱买的,但是也有做免费ssl证书的平台,比如我用的这个:https://www.sslforfree.com/ 今天登陆它发现我的账号居然被注销了,需要重新注册。新登陆进去才发现,好像平台换了。也好,摸索一边,记录一下。
现在收费选项变多了,不过依然有那个免费选项,总之就是三个月有效期、只能设置一个域名啥的限制,麻烦点,但是不给钱,一路设置到最后验证就可以了。
验证
平台总共给了三种验证方式,还是分别介绍下吧,要不就真的没啥可说的了。
邮件验证
这可能是最简单的验证方式,它根据你要验证的域名,生成相应的邮箱地址,你能收到这个邮件,进行下一步认证就行了。可惜的是,我没有用这个域名弄邮件,所以这个我不能用。
DNS验证
这个也是很方便的,它会让你在自己的dns上配置一个cname的解析,到它的一个指定的地方,然后它能走通这个解析,就验证了你的身份。这次我打算用这个验证。
上传文件验证
之前因为域名的一些问题,我用的都是这个,它是让你把一个指定的文件拷到你要验证的域名的指定路径下。它能访问通,就通过了验证。
配置ssl证书
通过了刚才的验证就可以下载证书文件了,下载默认格式的或者nginx格式的都可以。根据官网的教程,首先把证书文件上传上去到服务器,然后解压缩。在进行如下操作:
mv certificate.crt certificate.crt.1
cat certificate.crt.1 ca_bundle.crt >> certificate.crt
然后,在你nginx配置文件的server节点下添加下面的配置:
listen 443 ssl;
server_name 你的域名;
ssl_certificate /opt/nginx/cert/certificate.crt;
ssl_certificate_key /opt/nginx/cert/private.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
把证书文件考过去就好了。
备注
启动的时候可能会报个错误
nginx: [emerg] cannot load certificate "/opt/nginx/cert/certificate.crt": PEM_read_bio_X509_AUX() failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)
这是因为上面合并的cat命令会导致两个文件合并的连接处没有换行,换行了就没有了。不过,不处理似乎也不影响其https的功用。