NginxSSL证书制作详解
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
本文详细介绍了如何使用 Nginx 配置和安装 SSL 证书,确保网站安全传输数据,首先生成证书签名请求(CSR),然后从受信任的证书颁发机构(CA)获取 SSL 证书,接着在 Nginx 配置文件中添加 SSL 相关指令,如ssl_certificate
和ssl_certificate_key
,并设置必要的加密套件和协议版本,最后重启 Nginx 服务以应用更改,确保网站通过 HTTPS 正常运行,提升用户信息安全和信任度。
随着互联网的发展,网络安全问题日益受到重视,为了确保用户数据的安全性和隐私性,越来越多的网站采用 HTTPS 协议,HTTPS 是基于 HTTP 的加密协议,通过 SSL/TLS 证书加密传输的数据,从而保护数据在传输过程中的安全性,本文将详细介绍如何在 Nginx 中生成和配置 SSL 证书。
SSL 证书的基本概念
SSL(Secure Sockets Layer) 是一种安全协议,用于在两个通信设备之间建立加密连接,SSL 证书是服务器用来验证其身份的数字证书,它由证书颁发机构(CA)签发,SSL 证书包含公钥、私钥、证书主题名称等信息,当浏览器访问一个 HTTPS 网站时,会向服务器请求该网站的 SSL 证书,并使用证书中的公钥进行加密通信。
TLS(Transport Layer Security) 是 SSL 的后续协议,提供了更强的加密功能和更高的安全性,大多数现代浏览器和服务器都支持 TLS。
自签名证书与 CA 签名证书
自签名证书
自签名证书是由用户自行生成的,无需经过第三方证书颁发机构的验证,虽然可以快速部署,但由于没有权威机构验证证书的真实性,浏览器会显示“不安全”的警告,自签名证书通常适用于开发环境或内部网络。
CA 签名证书
CA 签名证书需要经过权威机构(如 Let's Encrypt、GlobalSign 等)的验证,这些机构会对域名的所有权进行验证,并颁发有效的证书,使用 CA 签名证书可以避免浏览器的安全警告,提升用户体验。
生成自签名证书
在正式讨论如何为 Nginx 配置 SSL 证书之前,我们先了解如何生成自签名证书,虽然自签名证书不适合生产环境,但它们有助于理解证书的生成过程。
安装 OpenSSL
OpenSSL 是一个广泛使用的开源工具,用于生成 SSL 证书和其他加密操作,确保系统上已安装 OpenSSL,在 Ubuntu 上可以通过以下命令安装:
sudo apt-get update sudo apt-get install openssl
生成私钥
私钥是加密通信的基础,我们可以使用 OpenSSL 命令生成一个 2048 位的 RSA 私钥:
openssl genrsa -out server.key 2048
这条命令会在当前目录下生成一个名为 server.key
的文件,其中包含私钥信息。
创建证书签名请求(CSR)
证书签名请求(CSR)包含证书的主题信息以及用于签署证书的公钥,使用以下命令创建 CSR:
openssl req -new -key server.key -out server.csr
执行上述命令后,系统会提示你输入一些信息,例如国家代码、州/省、城市、组织名称、部门名称以及常用名(Common Name, CN),CN 应该与你要保护的域名一致。
生成自签名证书
最后一步是使用私钥和 CSR 文件生成自签名证书,我们可以指定证书的有效期(天数),这里以 365 天为例:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
这条命令会在当前目录下生成一个名为 server.crt
的自签名证书文件。
为 Nginx 配置 SSL 证书
完成上述步骤后,我们将拥有一个完整的自签名证书和私钥对,接下来将其应用到 Nginx 中。
安装 Nginx
如果你尚未安装 Nginx,可以按照以下步骤进行安装,对于 Ubuntu 用户,可以使用以下命令安装:
sudo apt-get update sudo apt-get install nginx
修改 Nginx 配置文件
默认情况下,Nginx 的配置文件位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
,我们需要编辑这个文件以启用 SSL 支持。
备份原始配置文件:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
然后打开配置文件并添加或修改以下内容:
server { listen 80; server_name your_domain.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name your_domain.com; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; location / { root /var/www/html; index index.html index.htm; } }
请确保将 your_domain.com
替换为你实际使用的域名,并将 /path/to/server.crt
和 /path/to/server.key
替换为你生成的证书和密钥的实际路径。
测试配置并重启 Nginx
在保存并退出编辑器后,运行以下命令测试配置是否正确:
sudo nginx -t
如果没有任何错误输出,则表示配置文件无误,重新加载 Nginx 服务以使更改生效:
sudo systemctl reload nginx
访问 HTTPS 网站
你可以通过浏览器访问你的域名,并查看是否成功启用了 HTTPS,由于我们使用的是自签名证书,浏览器会显示一个安全警告,点击“高级”选项,选择“继续前往”以忽略此警告。
获取 CA 签名证书
虽然自签名证书在开发环境中非常有用,但在生产环境中推荐使用由权威机构颁发的 CA 签名证书,以下是获取 CA 签名证书的一般流程。
使用 Let's Encrypt 获取免费证书
Let's Encrypt 是一个提供免费 SSL 证书的服务提供商,你可以使用 Certbot 工具轻松获取并自动续订 Let's Encrypt 证书。
安装 Certbot:
sudo apt-get install certbot python3-certbot-nginx
然后运行以下命令以获取并配置证书:
openssl genrsa -out server.key 20480
Certbot 会引导你完成验证过程,并自动更新 Nginx 配置文件以使用新生成的证书。
手动申请证书
如果你不想使用 Let's Encrypt 或者需要其他类型的证书,可以手动申请证书,具体步骤如下:
- 选择证书颁发机构:选择一个可信赖的证书颁发机构,如 GlobalSign、DigiCert 等。
- 生成 CSR:使用 OpenSSL 生成证书签名请求。
- 提交 CSR:登录到证书颁发机构的网站并提交 CSR 文件。
- 下载证书:一旦申请被批准,下载生成的证书文件。
- 安装证书:按照上述步骤将证书和私钥配置到 Nginx 中。
通过本文的学习,你应该已经掌握了如何在 Nginx 中生成和配置 SSL 证书的方法,无论是使用自签名证书还是通过权威机构获取的 CA 签名证书,都可以有效保护用户的敏感信息,希望这些知识能够帮助你在实际项目中更好地实现 HTTPS 安全性。