zoukankan      html  css  js  c++  java
  • 免费给自己的网站加 HTTPS

    简介

    本文是通过 Let's Encrypt 提供的免费证书服务,实现让自己的网站加上 HTTPS。我的网站 —— hellogithub,就是通过这种方式实现的 HTTPS,效果如下:

    Let's Encrypt

    Let's Encrypt 是一个于2015年三季度推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过程的自动化流程,为安全网站提供免费的SSL/TLS证书。

    通过 Let's Encrypt 提供的脚本和服务,可以免费、方便 地给自己的网站加上 HTTPS,步骤简单、方便快捷。

    下面就一一道来,示例的操作环境如下:

    系统版本:ubuntu 14.04,nginx 版本:nginx/1.4.6 (Ubuntu)

    准备工作

    1. 查看 nginx 版本:nginx -v
    2. 查看 nginx 是否包含 ssl 模块:2>&1 nginx -V | tr ' ' ' '|grep ssl
    3. 检查 nginx 的重要配置:
    user root;  ## 运行身份为 root
    ...
    	server {
    		# 后面用于 cerbot 验证网站的所有权
    		location /.well-known/ {
    			root /path;
    		}
    	}
    ...
    

    步骤

    安装 certbot

    1. 通过 Let's Encrypt 网站提供的 cerbot 安装教程,选择自己的配置方式和操作系统。
    2. 安装 certbot。
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    sudo apt-get install certbot
    
    1. 运行 certbot:certbot certonly,进入交互界面进行申请证书和验证网站的所有权。
    2. 提高安全系数:sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

    配置 nginx

    下面以域名 example.com 为例:

    server {
    	listen 80;
    	server_name example.com www.example.com;
    	return 301 https://$host$request_uri;
    }
    
    
    server {
    	listen 443 ssl;
    
    	server_name example.com www.example.com;
    
    	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    	ssl_prefer_server_ciphers on;
    	ssl_dhparam /etc/ssl/certs/dhparam.pem;
    	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_session_timeout 1d;
    	ssl_session_cache shared:SSL:50m;
    	ssl_stapling on;
    	ssl_stapling_verify on;
    	add_header Strict-Transport-Security max-age=15768000;
    	...
    }
    

    自动续签证书

    Let's Encrypt 的证书 90 天过期,所以需要定期检查证书是否过期,同时续期。

    1. 查看 cerbot 脚本位置:sudo which cerbot
    2. 编辑 crontab :sudo crontab -e
    30 2 * * 6 /cerbot 脚本位置/certbot renew --dry-run >> /var/log/le-renew.log
    35 2 * * 6 /usr/sbin/service nginx reload
    

    每周六 2:30 检查证书,然后 2:35 重新加载 nginx 配置

    参考

  • 相关阅读:
    wget/curl查看请求响应头信息
    对软件测试的理解
    负载测试、压力测试和性能测试的区别
    经典测试面试题
    软件测试的目的和任务
    为cloudstack搭建ceph文件系统
    多网卡绑定实例
    牛客多校5 A-gpa(01分数规划)
    HDU
    2018ACM-ICPC宁夏邀请赛 A-Maximum Element In A Stack(栈内最大值)
  • 原文地址:https://www.cnblogs.com/xueweihan/p/6729043.html
Copyright © 2011-2022 走看看