使用https的网站越来越多了,不仅可以增加网络数据传输的安全性,还行增加搜索引擎的友好度。越来越多的个人站长也开始使用https,我们要赶得上趋势啊。

使用https的第一个问题就是要有CA证书,使用免费的,还是收费的?哪种证书比较好?哪家的证书比较便宜?下面是搜集到一些知识,学习和备用。

很多付费的证书机构会提供限时的免费证书来体验,免费的其实也很多,基本都有时间上的限制。

支持单个域名的最便宜,支持多个域名,和支持任意自域名的会贵很多。

购买网站

证书的购买网站,一般都卖很多种

证书颁发机构,前面的几种见到的更多,什么类型和流量的网站推荐用什么还不是很了解

  • Let’s Encrypt:免费,快捷,支持多域名(不是通配符),三条命令即时签署+导出证书。缺点是暂时只有三个月有效期,到期需续签
  • StartSSL 免费DV证书
  • Comodo PositiveSSL:便宜,单年9美刀,如果签三年大概每年4至5美刀。可签署ECC SSL证书
  • RapidSSL:单年签署价格同PositiveSSL,并没有什么优缺点
  • 沃通(Wosign)免费DV证书, 最近比较火,不推荐。 Github事件已经失去信任
  • globalsign
  • VeriSign
  • geotrust
  • Symantec 据说比较高级,也比较贵
  • 其他很多

这个网站可以查查 IDC点评,看起来大部分都是面向企业的。

证书相关知识

影响证书的价格的一些因素

  • 证书的等级 DV OV EV 三种
  • 是否支持多域名 支持单个域名的最便宜,支持多个域名,和支持任意自域名的会贵很多。
  • 支持多服务器
  • 加密强度

证书的等级

CA机构颁发的证书有3种类型:

  • 域名型SSL证书(DV SSL):信任等级普通,只需验证网站的真实性便可颁发证书保护网站;
  • 企业型SSL证书(OV SSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
  • 增强型SSL证书(EV SSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最

最低等级的有免费的,付费的一年几美元也能买到

错误记录

NGINX配置Let’s Encrypt证书,Firefox无法打开

使用 certbot 这个工具来生成 Let's Encrypt的证书,部署到nginx在 firefox 浏览器无法打开显示 sec_error_unknown_issuer, 说没有信任的中间证书提供商。

接着就在 SSL测试在线测试网站 ssltest 进行测试,会有这么一个警告 This server's certificate chain is incomplete. Grade capped to B.

然后google了下,看到别人提到 cert.pem chain.pem fullchain.pem 这个几个文件才想起来(certbot自动生成),是不是配的又问题呢?
于是 cert.pem(证书链残缺了) 替换成 fullchain.pem 就好了。

ssl_certificate  /etc/letsencrypt/live/blog.orangleliu.info/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.orangleliu.info/privkey.pem;
  • 1
  • 2
  • 1
  • 2

SSL测试得分

Nginx ssl相关的配置

server {
    listen 443 ;
    server_name blog.orangleliu.info;
    ssl on;
    ssl_certificate  /etc/letsencrypt/live/blog.orangleliu.info/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/blog.orangleliu.info/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:ECDH+AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:RSA+AESGCM:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
    ssl_prefer_server_ciphers   on;
    ssl_dhparam /etc/ssl/dhparam.pem;

    keepalive_timeout 70;
    ssl_session_cache shared:SSL:2m;
    ssl_session_timeout 2m;

    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains';
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://127.0.0.1:9988;
        proxy_redirect off;
    }

    location ~ ^/(shared/|built/) {
        root /www/ghost/core;
        access_log off;
        expires 7d;
    }

    location ~ ^/(content/images/) {
        root /www/ghost;
        access_log off;
        expires 7d;
    }

    location ~ ^/assets {
    root /www/ghost/content/themes/grayliner ;
    access_log off;
    expires 7d;
    }
}

server {
    listen 80;
    server_name blog.orangleliu.info;
    rewrite ^/(.*)$ https://$server_name$request_uri permanent;
}

其他

一行命令查看某个网站ssl证书的过期时间,这是 运维开发群 爷的分享, Centos可以运行

# echo | openssl s_client -connect blog.orangleliu.info:443 2>/dev/null | openssl x509 -enddate -noout
notAfter=Jan 26 06:57:00 2017 GMT

via.http://blog.csdn.net/orangleliu/article/details/57088623

最后修改:2017 年 06 月 09 日 07 : 54 AM