加密你的网站链接:Let’s Encrypt use SSL Certificates

不扫盲,直入主题: Let’s Encrypt:目前最好的免费SSL证书,覆盖99%的浏览器(桌面、移动端多设备支持)

目的:为drupal网站安装加密SSL证书,实现全站https浏览,并且,要求在SSL加密测试得A+

系统环境:( 我实验所用的系统环境如下,搭建使用了 bitnami nginx stack , 有三个conf文件需要修改:stack安装目录下的 /nginx/conf/nginx.conf ; nginx/conf/bitnami/bitnami.conf; 以及你的自定义app目录的conf文件:apps/drupal/conf/nginx-vhosts.conf )

  • centos 6.5 64bit
  • drupal 7
  • php 5.6.26 / nginx 1.101
  • openssl

参考网址:见下面链接列表。

步骤:首先确认你自己的系统环境,特别是openssl是否已经安装在系统中,否则,请先安装openssl;其次如果是apache在certbot.eff.org里请对应好吻合信息再查看执行脚本的提示;

ready? go!

  1. root 身份ssh登入服务器;
  2. 执行命令:
    openssl dhparam -out dhparams.pem 2048;
    稍等大约几秒到十几秒,系统自动执行完毕,找到该文件dhparams.pem,记住路径,后面设定要用到该文件,我是直接把这个生成的文件放在了ssl证书同域名文件夹当中;
  3. 可使用以下其一参考去使用Install Let’s Encrypt生成SSL证书;
    注意:如果执行Let’s Encrypt脚本时最后一步提示443端口被占用,请停止nginx或者apache服务,再进行Let’s Encrypt的ssl生成脚本(因为Let’s Encrypt生成ssl证书的时候会用到443端口 出现冲突;)

    使用Let’s Encrypt生成ssl证书的脚本其中注意:针对某个域名生成的证书的路径为:/etc/letsencrypt/live/对应的域名文件夹的下面;比如我的网站域名为the1design.cn,生成的证书就在/etc/letsencrypt/live/the1design.cn 下面,包括其子域名(如果有)也在这里里面,进入对应域名文件夹后,你会看到如下四个文件

    ,这就是你可能用得到的证书/路径-----在conf配置文件中要用到;

  4. Let’s Encrypt证书生成脚本可以一次对一个域名及其子域名一并生成SSL 证书;不同域名需要分别执行脚本;
  5. 在你服务器conf文件里,追加上ssl的设定 (写对ssl证书路径),例如我的(我使用了bitnami nginx stack搭建的网站环境)
    有两个文件需要设定/修改;其一:是域名文件夹下的nginx-vhosts.conf文件:其内容如下(另外一个是系统本身的全局设定conf文件。默认的全局设定conf文件里,针对ssl证书的设定是错误的,需要修正。):

    -----------------conf begin--------------------------

    server {

        listen    80;
        root   "/opt/bitnami/apps/commerce/htdocs";
        server_name  beautops.com www.the1design.cn the1design.cn;

    #全站自动从http301跳转到https, drupal需要预先在settings.php 文件中加注 $conf['https'] = TRUE;
        return 301 https://$host;
        include "/opt/bitnami/apps/commerce/conf/nginx-app.conf";
    }

    server {

      listen    443 ssl;

    # 以下add_header 请照抄 ----------修正HSTS安全问题
    

      add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

       root   "/opt/bitnami/apps/commerce/htdocs";

    #替换成自己的域名,要与使用Let’s Encrypt生成ssl证书的脚本时设定的域名完全对应
       server_name  www.the1design.cn the1design.cn;

        ssl_certificate      "/etc/letsencrypt/live/the1design.cn/fullchain.pem";
        ssl_certificate_key  "/etc/letsencrypt/live/the1design.cn/privkey.pem";

        
           ssl_session_cache    shared:SSL:1m;
           ssl_session_timeout  5m;

    # 以下ssl_ciphers请照抄
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
    
    # 以下ssl_prefer_server_ciphers请照抄
    
    ssl_prefer_server_ciphers on;
    
    #下面的ssl_dhparam路径请对应对你的dhparams.pem文件所在的绝对路径
    ssl_dhparam /etc/letsencrypt/live/the1design.cn/dhparams.pem

        
        include "/opt/bitnami/apps/commerce/conf/nginx-app.conf";
    }

    ----------conf end--------------------------
     

  6. 确认Let’s Encrypt脚本执行完成后,到https://www.ssllabs.com/ssltest/index.html检测一下;

    每次更改conf设定,都需要重载apache或者nginx服务;

Let’s Encrypt 提供的SSL 证书加密安全,通用率高,支持的设备、浏览器众多,而且支持主域名及其子域名(需要一次执行脚本中逐个写明,不支持泛解析式颁发证书)

分类: