Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程

Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程,第1张

Nginx配置SSL证书+搭建HTTPS网站教程 一、HTTPS是啥?

根据维基百科:

超文本传送安全协议书(简称:HTTPS,英文:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组成,用于出示加密通信及对网站服务真实身份的评定。HTTPS联接常常被用以因特网上的买卖付款和公司信息系统软件中比较敏感信息的传送。HTTPS不可与在RFC 2660中界定的安全性超文本传输协议(S-HTTP)相融。

现阶段,HTTPS早已成为注重隐私保护和安全的首选网站。随着技术的不断发展趋势,HTTPS网站不再是商业网站的专利。所有一般的站长和博客都可以自己搭建一个安全加密的网站。

如果网站没有加密,您的所有登录密码都会加密。显然,如果涉及到隐私保护和财务问题,不加密传输是一件很可怕的事情。

由于本博客的读者都是接近专业人士的,我们不必多费口舌,直接进入正题。

二、应用OpenSSL形成SSLKey和CSR

因为只有电脑浏览器或者系统软件信任的CA才能让所有访问者顺利浏览你的加密网站,而不是被提醒证书不正确。因此,让我们绕过自签名的过程,直接开始签署第三方可信站点的SSL证书。

Linux、OSX等基础系统软件下默认安装OpenSSL,由于存在一些安全隐患,如今的第三方SSL证书签名机构普遍规定至少2048位RSA加密公钥。

另外,一般SSL证书验证分为两种方式,一种是DV(域验证),另一种是OV(组织验证)。前者必须只认证域名,后者必须认证你的机构或企业。论安全系数水平,后者肯定更好。

无论是使用DV还是OV来形成公钥,都必须填写一些基本信息。这里我们假设如下:

域名,也叫通用名,不一定是域名,因为唯一的证书:example.com。

或组织):例如,Inc.

部门:可以留空。在这里,每个人都写Web安全。

大城市):北京

州/省):北京

我国):CN

压缩强度:2048位,如果你的设备功能强悍,你也可以选择4096位。

根据以上信息,OpenSSL使用以下指令形成key和csr。

openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc./OU=Web Security/CN=example.com"

PS:如果是泛域证书,要填写*.example.com。

你可以在系统软件的任何地方运行这个命令,它会在当前目录下自动形成example_com.csr和example_com.key两个文档。

接下来可以查询example_com.csr,得到一长串类似的文字。

-----BEGIN CERTIFICATE REQUEST----- MIICujCCAaICAQAwdTELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JlaWppbmcxEDAO BgNVBAcTB0JlaWppbmcxFTATBgNVBAoTDEV4YW2wbGUgSW5jLjEVMBMGA1UECxMM V2ViIFNlY3VyaXR5MRQwEgYDVQQDEwtleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAPMEnvVCdGN9VWnvp7JkMoOdpOurYMPvclIbsI iD4mGN982Ocl22O9wCV/4tL6DpTcXfNXeWd7CNEKT4iJYGqllqP3/CojhkemiY SF3jwncvP6VoST/HsZeMyNB71XwYnxFCGqSyE3QjxmQ9ae38H2LIpCllfd1l7iVp AX4i2HvGTHFzb0XnmMLzq4HyVuEIMoYwiZX8hqkwEAhKpBdfawkOcIRkbOlFew SEjLyHYnruXutmQx1d7lzZCxut5Sm5At9al0bf5FOaaJylTEwNEpFkP3L29GtoU qg1t9Q8WufIfK9vXqQqwg8J1米uK7kksnbYcoPnNgPx36kZsCAwEAAaAAMA0GCSqG SIb三维QEBBQUAA4IBAQCHgIuhpcgrsNwDuW6731/DeVwq2x3ZRqRBuj9/M8oONQen 1QIacBifEMrMaCwIpt3bHvtXEF8cCAJAR9sQ4Svy7M0w25DwrwaWIjxcf/J8U audL/029CkAuewFCdBILTRAAeDqxsAsUyiBIGTITuqiEpGG4OlyKK/MF13FxDj /oKyrSJDtp1Xr9R7iqGCs/Zl5qWmDaLN7/qxBK6vX2R/HLhOK0aKi1ZQ4cZeP7Mr 8EzjDIAko87Nb/aIsFyKrt6Ze3jOF0/vnnpw7pMvhqfolWdTVXddjd9Dpr2x1nc y5hnop4k6kVRXDjQ4OTduQq4PSzU4hb41GIQEz4 -----END CERTIFICATE REQUEST-----

这份CSR文件是您必须提交给SSL权威认证的文件。如果您的域名或组织根据进行了认证,权威认证将授予您example_com.crt

example_com.key必须在Nginx设备中使用,以配合example_com.crt的应用程序,必须妥善保存,不得泄露给任何第三方。

三、Nginx配备HTTPS网址及其提升安全性的配备

如前所述,您需要将CSR文档提交给第三方SSL权威认证。通过验证后,他们将授予您一个名为example_com.crt的CRT文档

此外,为了更好地统一,您可以将所有三个文档移动到/etc/ssl/private/file目录中。

然后可以更改Nginx环境变量

server { listen 80; listen [::]:80 ssl ipv6only=on;  listen 443 ssl; listen [::]:443 ssl ipv6only=on; server_name example.com; ssl on; ssl_certificate /etc/ssl/private/example_com.crt; ssl_certificate_key /etc/ssl/private/example_com.key; }

检查环境变量没有问题后,再次加载Nginx即可。

nginx-t&;&nginx-s重新加载

但是,这样做并不安全。默认设置是SHA-1模式,现在流行的计划都应该防止SHA-1。为了更好的保证更强的安全系数,我们可以使用Difi-Helm密钥交换。

首先,转到/etc/ssl/certs文件目录并创建一个dhparam.pem

cd /etc/ssl/certs openssl dhparam -out dhparam.pem 2048 # 假如你的设备特性充足强劲,可以用 4096 位加密

成型后,在Nginx的SSL设备后添加。

ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "EECDHECDSAAESGCM EECDHaRSAAESGCM EECDHECDSASHA384 EECDHECDSASHA256 EECDHaRSASHA384 EECDHaRSASHA256 EECDHaRSARC4 EECDH EDHaRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; keepalive_timeout 70; ssl_session_cache shared:SSL:十米; ssl_session_timeout 十米;

另外,如果是全站HTTPS且不考虑HTTP,可以加上HSTS告诉你的电脑浏览器全站加密,用HTTPS强制浏览。

add_header Strict-Transport-Security max-age=63072000; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff;

此外,还可以独立打开一个Nginx设备,用301自动跳转到HTTPS进行HTTP浏览需求。

server { listen 80; listen [::]:80 ipv6only=on; server_name example.com; return 301 https://example.com$request_uri; } 四、靠谱的第三方SSL审签组织

众所周知,最近某NIC机构曝光了一个关于Google域名认证的丑闻,可见选择一个可靠的第三方SSL认证机构是多么的关键。

在这个阶段,目前市场上针对中小型站长和公司的SSL证书授予机构一般有:

StartSSL

comodo/子知名品牌正面SSL

GlobalSign/子知名品牌AlphaSSL

GeoTrust/子知名品牌RapidSSL

其中包括PostivieSSL、AlphaSSL、RapidSSL等。都是知名品牌。通常,它们都是3级和4级证书,因此您可能需要将CA证书链升级到您的CRT文档。

以Comodo正SSL为例,你必须串接CA证书,假设你的域名是example.com。

然后,连接的指令是:

cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > example_com.signed.crt

在Nginx设备中使用example_com.signed.crt。

如果是一般的AplhaSSL通用域名证书,他们不太容易给你发CA证书链,所以你必须在你的CRT文档后面加上AlphaSSL的CA证书链。

AlphaSSL中间CA:https://www.alphaSSL.com/support/install-root-certificate.html

五、对于公司的EVSSL

EVSSL,扩展验证的总称,更注重企业官网的安全维护和严格验证。

最显著的区别是EVSSL显示的一般信息都是翠绿色的。比如这个网站的SSL证书就是EVSSL。

注:阅读相关网站基本建设方法的文章,请移至网站建设教程频道栏目。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/769642.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-02
下一篇 2022-05-02

发表评论

登录后才能评论

评论列表(0条)

保存