如何在CentOS 7上使用Lets Encrypt配置Nginx
如何在CentOS 7或RHEL 7服务器上使用Lets Encrypt免费的SSL证书保护Nginx Web服务器?
如何在CentOS 7服务器上使用Lets Encrypt配置Nginx?
如何在CentOS Linux 7服务器上安装和设置Lets Encrypt TLS/SSL证书。
Lets Encrypt是您的网站或任何其他项目的免费,自动和开放的证书颁发机构。
本教程显示如何使用Lets Encrypt为Nginx Web服务器安装免费的SSL证书。
您将学习如何在服务器上正确部署Diffie-Hellman,以在CentOS/RHEL 7上获得SSL Labs A +分数。
如何在CentOS 7上使用Lets Encrypt保护Nginx
获取SSL证书的过程如下:
- 获取acme.sh软件:
git clone https://github.com/Neilpang/acme.sh.git
- 创建/.well-known/acme-challenge/目录:
mkdir -p/var/www/html/.well-known/acme-challenge /
- 在您的域中获取SSL证书:
acme.sh --issue -w/DocumentRootPath/-d your-domain
- 在Nginx上配置TLS/SSL:
vi/etc/nginx/sites-available/default
- 设置cron作业以进行自动续订
- 打开端口443(HTTPS):
sudo firewall-cmd --add-service = https
让我们看看如何安装acme.sh客户端并在CentOS/RHEL 7上使用它来从Lets Encrypt获得SSL证书。
步骤1安装所需的软件
使用yum命令安装git,wget,curl和bc软件包:
$ sudo yum install git bc wget curl
步骤2安装acme.sh让加密客户端
克隆仓库:
$ cd /tmp/ $ git clone https://github.com/Neilpang/acme.sh.git
在系统上安装acme.sh客户端,运行:
$ cd acme.sh/ $ sudo -i # ./acme.sh --install
安装后,必须关闭当前终端,然后再次重新打开以使别名生效。
或只需执行以下源命令:
$ sudo source ~/.bashrc
步骤3建立acme-challenge目录
执行以下mkdir命令。
确保根据需要将D设置为实际的DocumentRoot路径:
# D=/usr/share/nginx/html # mkdir -vp ${D}/.well-known/acme-challenge/ ###---[ `NOTE: Adjust permission as per your setup` ]---### # chown -R nginx:nginx ${D}/.well-known/acme-challenge/ # chmod -R 0555 ${D}/.well-known/acme-challenge/
还创建用于存储SSL证书的目录:
# mkdir -p /etc/nginx/ssl/theitroad.local/
步骤4建立dhparams.pem档案
运行openssl命令:
# cd /etc/nginx/ssl/theitroad.local/ # openssl dhparam -out dhparams.pem -dsaparam 4096
步骤5获得域证书
为您的域颁发证书:
acme.sh --issue -w /path/to/www/htmlRoot/ -d example.com -k 2048 sudo acme.sh --issue -w /usr/local/nginx/html -d server2.theitroad.local -k 2048
步骤6配置Nginx
您刚刚成功地从Lets Encrypt请求了CentOS 7或RHEL 7服务器的SSL证书。
现在是配置它的时候了。
编辑default.ssl.conf:
$ sudo vi /etc/nginx/conf.d/default.ssl.conf
追加以下配置:
## START: SSL/HTTPS server2.theitroad.local ### server { #------- Start SSL config with http2 support ----# listen 10.21.136.134:443 http2; server_name server2.theitroad.local; ssl on; ssl_certificate /etc/nginx/ssl/theitroad.local/server2.theitroad.local.cer; ssl_certificate_key /etc/nginx/ssl/theitroad.local/server2.theitroad.local.key; ssl_session_timeout 30m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS; ssl_session_cache shared:SSL:10m; ssl_dhparam /etc/nginx/ssl/theitroad.local/dhparams.pem; ssl_prefer_server_ciphers on; ## Improves TTFB by using a smaller SSL buffer than the nginx default ssl_buffer_size 8k; ## Enables OCSP stapling ssl_stapling on; resolver 8.8.8.8; ssl_stapling_verify on; ## Send header to tell the browser to prefer https to http traffic add_header Strict-Transport-Security max-age=31536000; ## SSL logs ## access_log /var/log/nginx/ssl_access.log; error_log /var/log/nginx/ssl_error.log; #-------- END SSL config -------## # Add rest of your config below like document root, php and more ## location / { root /usr/share/nginx/html; index index.html index.htm; } # Allow php apps location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } ## END SSL server2.theitroad.local ######
在vi/vim文本编辑器中保存并关闭文件。
步骤7安装证书
将颁发的证书安装到nginx服务器:
# acme.sh --installcert -d server2.theitroad.local \ --keypath /etc/nginx/ssl/theitroad.local/server2.theitroad.local.key \ --fullchainpath /etc/nginx/ssl/theitroad.local/server2.theitroad.local.cer \ --reloadcmd 'systemctl reload nginx'
确保使用ss命令或netstat命令打开端口os:
# ss -tulpn
步骤8防火墙配置
您需要在服务器上打开端口443(HTTPS),以便客户端可以连接它。
如下更新规则:
$ sudo firewall-cmd --add-service=https $ sudo firewall-cmd --runtime-to-permanent
步骤9进行测试
打开浏览器并输入您的域,例如:
https://server2.theitroad.local
使用SSLlabs测试站点进行测试:
https://www.ssllabs.com/ssltest/analyze.html?d=server2.theitroad.local
步骤10 acme.sh命令
列出所有证书:
# acme.sh --list
续订名为server2.theitroad.local的域的证书
# acme.sh --renew -d server2.theitroad.local
请注意,Cron作业也会尝试为您续订证书。
默认情况下按如下方式安装(您无需采取任何措施)。
要查看作业运行:
# crontab -l
输出示例:
8 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
升级acme.sh客户端:
# acme.sh --upgrade
获得帮助:
# acme.sh --help | more