第三方付费SSL证书设置crt文件和nginx部署服务器

 

购买证书

上一次是为了wordpress博客的SSL证书,这一次是为了小程序接口的证书(小程序只支持https且备案的域名作接口).

阿里云和腾讯云都提供免费SSL证书服务,上一篇文章有提到过一些内容,根据文章自行参考.

ssls.com购买和配置wordpress小绿锁https安全ssl证书

证书激活

该网站的激活方式主要以上传文件为主,不支持域名解析等验证方式,不是很方便.

其验证方式是下载txt验证文件,按其指定目录能够访问即可,等待CA机构扫描后才能激活.

自建了一个express服务,用nginx代理,提供静态txt访问地址,供其临时访问审核.

express代码

其中public为静态文件夹,放置其中的文件,按根路径+文件夹+文件名称访问即可.

const express = require('express')
const app = express()
app.use(express.static('public'))
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000, () => console.log('Example app listening on port 3000!'))

目录结构

开启端口

这个网站提供的压缩包文件为domain.crt,domain.ca-bundle,domain.p7b

最开始还提供了一个key.txt,一定要及时保存好,没有key,证书就无法正常使用,丢失了只能重新申请SSL.

这个key只会出现一次,没有任何地方有备份.

配置SSL优先检测端口和域名解析,先访问http,看看是否连通,这样才代表https可以访问同样的服务.

其次一定要检测端口443是否开放(防火墙),因为没有检测端口,一度怀疑nginx配置问题和证书本身的问题,直到怀疑系统和人生.

要知道开启防火墙之后,一些特殊端口都要单独设置开放才行.

配置证书

key.txt文件直接复制一份,文件后缀改为.key即可(如domain.key).

另外要把crt文件和ca-bundle文件合并为一个新的crt文件,注意先后顺序.

cat your_domain.crt your_domain.ca-bundle >> ssl-bundle.crt

如果nginx重启报错,注意crt的文件内容在上,ca-bundle的文件内容在下,注意换行,错误,可手动换行.

这个新生成的crt文件和key文件一起放在nginx的配置上即可.

 server {
        listen 443;
        server_name domain.com;
        ssl on;
        # root html;
        # index index.html index.htm;
        # SSL证书
        ssl_certificate   domain.crt;
        ssl_certificate_key  domain.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;

        location / {
            # 指向当前的某个服务端口
            proxy_pass   http://127.0.0.1:5000;
            #设置请求头,并将头信息传递给服务器端 
            proxy_set_header Host $host;
        }
    }