美文网首页
申请免费ssl证书并配置

申请免费ssl证书并配置

作者: 喜叔z | 来源:发表于2019-08-10 17:56 被阅读0次

    准备工作,创建https文件

    mkdir /data/www/https
    

    1 创建账户私钥

    首先创建一个目录,用来存放所有的密钥文件。

    我在根目录下创建了/data/www/https文件

    之后就是创建账户密钥了,命名为account.key,具体命令如下:

    openssl genrsa 4096 > account.key
    

    这个密钥是用来给Let's Encrypt网站验证身份的。

    2 创建CSR文件

    下面的步骤就是为生成SSL证书做准备了。

    首先用下面的命令生成域名密钥。

    openssl genrsa 4096 > domain.key
    

    之后生成CSR文件,这里要将需要SSL的域名填进去,以我的网站为例,我将www域名添加了进去。

    openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:www.54hongxi.xyz")) > domain.csr
    

    3 域名验证

    在Let's Encrypt进行证书签发之前,需要对我们的网站验证所有权。具体来说,他会访问网站的/.well-known/acme-challenge/目录来查看有没有他要求的文件。
    在这里,我们只需在网站根目录下创建该文件夹即可。

    mkdir /data/www/challenges
    

    4 创建证书

    首先,下载acme-tiny自动化证书管理脚本。

    wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py
    

    接着,指定账户密钥、域名密钥以及验证网站所有权时使用的目录。

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

    最后,需要将中间证书和网站证书合并:

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

    这样,我们最终的证书就是chained.pem

    其他

    创建challenges

    mkdir /data/www/challenges
    

    配置nginx

    server {
        listen 80 default_server;
        listen 443 default_server;//ssl监听443
            server_name  网址;
            //开启并配置
        ssl on;
            ssl_certificate /data/www/https/chained.pem;
            ssl_certificate_key /data/www/https/domain.key;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
            ssl_session_cache shared:SSL:50m;
    
    
        location /.well-known/acme-challenge/ {
            alias /data/www/challenges/;
            try_files $uri =404;
        }
    
        location /static {
            alias  /data/www/orderAll/web/static/;
        }
    
        location / {
            try_files $uri @yourapplication;
        }
            location @yourapplication {
                     include uwsgi_params;
                     uwsgi_pass unix:/data/www/logs/order.sock;
                     uwsgi_read_timeout 1800;
                     uwsgi_send_timeout 300;
        }
    }
    

    重启nginx

    sudo service nginx reload
    

    参考文章:
    https://fanzheng.org/archives/21

    相关文章

      网友评论

          本文标题:申请免费ssl证书并配置

          本文链接:https://www.haomeiwen.com/subject/vkarjctx.html