Nginx安装SSL证书实现https

2018年10月28日

导读

基于Ubuntu 24.04LTS系统,详细介绍Nginx安装SSL证书实现https的各项操作步骤,以及列出所有的Nginx配置命令。

系统环境:Ubuntu 24.04LTS

SSL证书:Comodo Essential SSL(其他品牌SSL证书也适用本教程)

1、macOS生成csr文件和key文件

openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

按照提示输入内容

Country Name (2 letter code) [AU]: 国家,中国输入CN

State or Province Name (full name) [Some-State]: 州名或省份名称,广东输入Guangdong

Locality Name (eg, city) []: 城市,佛山输入Foshan

Organization Name (eg, company) [Internet Widgits Pty Ltd]: 输入公司英文名称

Organizational Unit Name (eg, section) []: 输入公司部门英文名称,IT部输入IT Dept

Common Name (e.g. server FQDN or YOUR name) []: 申请SSL证书域名,如www.domain.com

Email Address []: 电子邮箱,如hzzzoo@126.com

其他内容建议留空,直接回车留空

运行成功后,你会获得domain.csrdomain.key两个文件

2、购买SSL证书

SSL证书品牌有很多,根据实际情况进行选购,本文购买的是Comodo Essential SSL,购买流程不同品牌都有些不同,但是上面填写的资料必须真实,同时填写的资料必须和生成csr文件填写的资料一致。其中有一处需要填写csr信息,把之前生成csr代码复制粘贴即可。

一般证书颁发机构在收到申请资料后,如果审核资料没有问题,大概在30分钟内会颁发证书,SSL证书会通过邮件形式发送到域名所有者邮箱。邮件的SSL证书一般包含四个证书文件,分别是:

domain_com.crt - Your Free TLS Certificate

SectigoRSADomainValidationSecureServerCA.crt - Intermediate CA Certificate

USERTrustRSAAAACA.crt - Intermediate CA Certificate

AAACertificateServices.crt - Root CA Certificate

3、合并SSL证书文件

将邮件中的四个SSL证书文件的内容按下面顺序(必须严格按照此顺序):

domain_com.crt - Your Free TLS Certificate

SectigoRSADomainValidationSecureServerCA.crt - Intermediate CA Certificate

USERTrustRSAAAACA.crt - Intermediate CA Certificate

AAACertificateServices.crt - Root CA Certificate

合并成一个文件,改名称为domain.crt

4、SSL证书上传服务器

将第一步的domain.key文件和第三步合并后SSL证书domain.crt文件上传到服务器nginx目录。

5、配置Nginx安装SSL证书

Nginx配置代码如下:

server { listen 443 ssl http2; server_name www.domain.com; include /etc/nginx/blacklistwjl.conf; root /srv/domain.com; index index.html; ssl_certificate domain.crt; ssl_certificate_key domain.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; error_page 404 /Error.html; access_log /var/log/nginx/domain.com.access.log; error_log /var/log/nginx/domain.com.error.log; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "no-referrer-when-downgrade" always; add_header Strict-Transport-Security "max-age=31536000" always; add_header Cache-Control "max-age=31536000"; if ($http_user_agent ~* "(zgrab|sqlmap|nikto|masscan|nmap|acunetix|netsparker|dirbuster)") { return 444; } location ~* (\.env|wp-admin|wp-login|xmlrpc\.php|phpmyadmin|cgi-bin) { return 444; } location ~* \.(php|jsp|asp|aspx|sh|bash|exe|pl|py)$ { return 444; } location ~* (\/\.|(?:\.(?:log|swp|bak|conf|git|env)))$ { return 444; } } server { listen 443 ssl http2; server_name domain.com; include /etc/nginx/blacklistwjl.conf; ssl_certificate domain.crt; ssl_certificate_key domain.key; return 301 https://www.domain.com$request_uri; } server { listen 80; server_name domain.com www.domain.com; include /etc/nginx/blacklistwjl.conf; return 301 https://www.domain.com$request_uri; }

上面代码不仅能正确配置Nginx和安装SSL证书,同时将http中www版本和无www版本以及https无www版本自动301跳转到https中www版本,更利于搜索引擎优化(SEO)。

6、重启Nginx服务,使配置生效

service nginx restart

Nginx安装SSL证书实现https - 当前页面

2018年10月28日

基于Ubuntu 24.04LTS系统,详细介绍Nginx安装SSL证书实现https的各项操作步骤,以及列出所有的Nginx配置命令。