2

使用Let’s Encrypt(certbot)为你的网站生成免费的 SSL 证书

 2 years ago
source link: http://wwj718.github.io/post/%E5%B7%A5%E5%85%B7/https-note/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用Let’s Encrypt(certbot)为你的网站生成免费的 SSL 证书

2016-06-19

— 2018.08.15更新

推荐使用acme.sh,教材参考:申请Let’s Encrypt通配符HTTPS证书

简单易用,且没有cerbot的各种安装问题,连证书的自动更新都不必操心!

关于HTTPS

引维基百科的说法

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS)是一种网络安全传输协议。在计算机网络上,HTTPS经由超文本传输协议进行通信,但利用SSL/TLS来对数据包进行加密。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性

HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护。

关于TLS/SSL

依然引用维基百科

传输层安全协议(英语:Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障

TLS利用密钥算法在互联网上提供端点身份认证与通讯保密,其基础是公钥基础设施。

TLS包含三个基本阶段:

  • 对等协商支持的密钥算法
  • 基于非对称密钥的信息传输加密和身份认证、基于PKI证书的身份认证
  • 基于对称密钥的数据传输保密

由于运营商的劫持,国内公司不堪其扰,纷纷将全站采用https

如果最后一条命令报错:setuptools pkg_resources pip wheel failed with error code 2

解决方案是:

sudo apt-get install letsencryp

sudo apt-get purge python-virtualenv python3-virtualenv virtualenv

sudo pip install virtualenv

需要注意的是,验证的时候保证80/443端口对外开放,且不被占用,如果这些端口实现被nginx占用,先停掉nginx

完成后查看生成的证书:

  • sudo tree /etc/letsencrypt/live/

证书的失效期是3个月,

续签的命令为:

  • ./certbot-auto renew 或
  • ./certbot-auto renew –standalone –pre-hook “service nginx stop” –post-hook “service nginx start”

可以用cron添加一个定时任务,自动续签。

将证书用于nginx

:::text

upstream minio_server {
            server 127.0.0.1:9000 fail_timeout=0;
    }

# 监听 HTTPS 请求
server {
        #server_name example.com;
        listen 8443 ssl;

        # TLS 基本设置
        ssl_certificate /etc/letsencrypt/live/www.just4fun.site/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.just4fun.site/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        # 网站的其它设置不变
        # [...]
  location / {
        try_files $uri @proxy_to_app;
  }

  # No basic auth security on the heartbeat url, so that ELB can use it


  location @proxy_to_app {
    proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
    proxy_set_header X-Forwarded-Port $http_x_forwarded_port;
    proxy_set_header X-Forwarded-For $http_x_forwarded_for;
    proxy_set_header Host $http_host;

    proxy_redirect off;
    proxy_pass http://minio_server;
  }
}

当然我们可以将任意端口用于https,不过证书无法移植到其他服务器(可能是我还不熟悉)

访问https://www.just4fun.site:18443,一切正常(我在青云的路由器上将8443端口映射为18443)

文章作者 种瓜

上次更新 2016-06-19

利用CSRF漏洞对Open edX进行提权 构建类s3存储系统(Minio)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK