阿里域名申请 ​ Let‘s Encrypt SSL 证书

参考博客1:Let's Encrypt教程 - 简书

参考博客2:Nginx解决配置SSL证书报错:nginx: [emerg] unknown directive "ssl_certificate1" in /usr/local/nginx/conf/ngi... - 简书

参考博客3:利用letsencrypte生成证书时,create virtual environment失败_Note的技术博客_51CTO博客

       本文旨在记录此次安装过程中遇到的问题及解决办法,安装过程参考“参考博客1”。前半部分将介绍 Let's Encrypt 的安装与证书获取,后半部分主要记录安装过程中遇到的问题

环境:Ubuntu 16.04

软件:Nginx

一、申请证书流程

1. 安装工具

sudo apt-get install letsencrypt

2. 域名配置

将域名 example.com A 记录指向当前服务器的 IP 地址。

3. 获取证书

  • 暂停 Nginx
sudo service nginx stop
  • 执行获取证书命令
sudo letsencrypt certonly --standalone

按提示输入对应的域名走完流程,生成的证书信息将存放在如下目录:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

4. 配置 Nginx

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;

  ......
}

5. 重启 Nginx

sudo service nginx start

6. 证书自动更新

证书有效期只有90天,所以需要定期更新证书。

新建文件 certbot-auto-renew-cron,内容如下:

15 2 * */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

执行命令:

crontab certbot-auto-renew-cron

每隔两个月的凌晨 2:15 将执行更新操作。

 二、申请证书问题

问题1:在执行上述“获取证书”步骤的命令 “sudo letsencrypt certonly --standalone” 时,报以下错误:

0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

Creating virtual environment...

Traceback (most recent call last):

  File "/usr/lib/python3/dist-packages/virtualenv.py", line 2363, in <module>

    main()

  File "/usr/lib/python3/dist-packages/virtualenv.py", line 719, in main

    symlink=options.symlink)

  File "/usr/lib/python3/dist-packages/virtualenv.py", line 988, in create_environment

    download=download,

  File "/usr/lib/python3/dist-packages/virtualenv.py", line 918, in install_wheel

    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)

  File "/usr/lib/python3/dist-packages/virtualenv.py", line 812, in call_subprocess

    % (cmd_desc, proc.returncode))

OSError: Command /root/.local/share/letsencrypt/bin/python - setuptools pkg_resources pip wheel failed with error code 1

       解决办法:卸载重装 virtualenv  

pip uninstall virtualenv
pip install virtualenv

问题2:在执行上述“获取证书”步骤的命令 “sudo letsencrypt certonly --standalone” 时,报以下错误:

Failed authorization procedure. kjfhaifahoa.cn (http-01): urn:ietf:params:acme:error:dns :: DNS problem: NXDOMAIN looking up A for kjfhaifahoa.cn - check that a DNS record exists for this domain

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: kjfhaifahoa.cn
   Type:   None
   Detail: DNS problem: NXDOMAIN looking up A for kjfhaifahoa.cn -
   check that a DNS record exists for this domain

       解决办法:检查通过域名能否正确访问到服务器,如域名是否正确,域名是否已备案或备案是否已通过。我出现这个问题时是因为域名正在备案,但还没有通过,域名备案通过后就没问题了。

问题3:nginx: [emerg] unknown directive “ssl_certificate1” in /usr/local/nginx/conf/nginx.conf:94

       这个是因为 nginx 没有装 ssl 模块,安装 ssl 模块即可

       1)在nginx的安装目录执行

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

       2)在nginx安装目录执行

make

       3)上一步执行完重启 nginx,如果不报错,说明安装成功。如果报错,再执行下一句(亲测make install不会覆盖之前的配置)

make install

问题4:配置好Nginx及证书后浏览器报“响应时间过长”

       解决办法:这个是因为服务器 443 端口未开启( HTTPS 服务使用的是 443 端口)。开启 443 端口即可:

       1)我的是阿里云服务器,需要登录阿里云控制台,添加 “入方向” 规则

       2)设置防火墙,放行 443 端口,先运行 nginx 监听 443 端口, 再配置防火墙规则放行 443 端口

iptables -I INPUT -p tcp --dport 443 -j ACCEPT

问题5:配置好证书后360浏览器还是报证书错误

       这个是因为 Let's Encrypt 证书不被360浏览器,换浏览器打开或者换证书即可。

       阿里云提供免费的SSL证书,三个月一换:数字证书管理服务管理控制台 - SSL 证书

       腾讯提供免费的SSL证书,一年一换:登录 - 腾讯云

问题6:配置 Http 强制跳转 Https

       1)return 301 https://$server_name$request_uri;

       2)return 301 https://$http_host$request_uri;

       使用 http 发起请求时,这两种写法都能实现 http 转 https,区别是: 1)在浏览器地址栏能看到地址由 http 变为了 https,但是 2)看不到,也就是转发到 https 后浏览器地址栏实际看到的还是http

# http使用的是 80 端口,将 80 端口的请求都转发到 https 即 443 端口
server {
    listen 80;
    server_name kiion.cn www.kiion.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name kiion.cn www.kiion.com;
    ssl_certificate /etc/letsencrypt/live/kiion.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/kiion.cn/privkey.pem;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值