zoukankan      html  css  js  c++  java
  • Let's Encrypt,免费好用的 HTTPS 证书

    https://imququ.com/post/letsencrypt-certificate.html

    1、

    openssl genrsa 4096 > account.key

    2、私钥

    openssl genrsa 4096 > domain.key

    3、csr文件生成

    DNS域名,可以多个,都要可以访问,注意用到了上面生成的文件

    openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]
    subjectAltName=DNS:yoursite.com,DNS:www.yoursite.com")) > domain.csr

    其中,openssl.cnf文件位置,可以查找:

    find / -name 'openssl.cnf' 

    4.1、验证准备

    目录

    mkdir ~/www/challenges/

    访问引导,注意目录,不要忘记reload生效

    server {
    listen 80; server_name www.yoursite.com yoursite.com;    #验证访问 location
    ^~ /.well-known/acme-challenge/ { alias /home/xxx/www/challenges/; try_files $uri =404; } location / {
         #其他访问转向https rewrite
    ^/(.*)$ https://yoursite.com/$1 permanent; } }

    4.2 脚本文件

    https://github.com/diafygi/acme-tiny  需要及时更新

    5 验证

    注意用到了上面生成的两个文件,并提供验证目录

    python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir ~/www/challenges/ > ./signed.crt

    通过验证后,当前目录下就会生成一个 signed.crt 证书文件。

    6 合并证书

    wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
    cat signed.crt intermediate.pem > chained.pem

    7开启(nginx配置,其他和http配置一样)

    server {
        server_name YOUR_DOMAINNAME_HERE;
        listen 443;
        ssl on;
        ssl_certificate     ~/www/ssl/chained.pem;
        ssl_certificate_key ~/www/ssl/domain.key;
    }

    6自动更新脚本

    Let's Encrypt 签发的证书只有 90 天有效期,用脚本定期更新。

    脚本内容和上面步骤一样,验证并获得证书,合并证书,最后重载nginx,注意目录

    #!/bin/bash
    
    cd /home/xxx/www/ssl/
    python acme_tiny.py --account-key account.key --csr domain.csr --acme-dir /home/xxx/www/challenges/ > signed.crt || exit
    wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
    cat signed.crt intermediate.pem > chained.pem
    service nginx reload

    7定期执行脚本

    可执行权限

    chmod a+x renew_cert.sh

    定期执行(每月一次)

    0 0 1 * * /home/xxx/shell/renew_cert.sh >/dev/null 2>&1
  • 相关阅读:
    django ---解决跨域的问题
    python-isinstance函数
    python每日一学-os模块常用函数
    调用父类方法super
    fiddler小运用-断点
    劝告
    Django model字段
    Jenkins自动化部署前端
    解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐
    高德地图判断点的位置是否在浏览器可视区域内
  • 原文地址:https://www.cnblogs.com/mitang/p/6034828.html
Copyright © 2011-2022 走看看