如何在 Ubuntu 20.04 中为 Nginx 创建自签名 SSL 证书
原创怎样在 Ubuntu 20.04 中为 Nginx 创建自签名 SSL 证书
自签名SSL证书是一种在本地或非商业环境中使用的SSL证书,它不需要通过第三方认证机构进行认证。在Ubuntu 20.04上为Nginx服务器创建自签名SSL证书是一个相对明了的过程,下面将详细介绍怎样进行。
准备工作
在开端之前,请确保您的Ubuntu 20.04系统已经安装了Nginx。如果没有安装,可以通过以下命令进行安装:
sudo apt update
sudo apt install nginx
安装完成后,您可以通过访问http://localhost来检查Nginx是否正常运行。
生成自签名SSL证书
生成自签名SSL证书需要以下步骤:
- 生成CA私钥
- 生成CA证书
- 生成服务器私钥
- 生成服务器证书请求
- 使用CA证书签名服务器证书请求
以下是一个明了的命令行步骤,用于生成自签名SSL证书:
# 1. 生成CA私钥
sudo openssl genpkey -algorithm RSA -out ca.key -pkeyopt rsa_keygen_bits:4096
# 2. 生成CA证书
sudo openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt
# 3. 生成服务器私钥
sudo openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:4096
# 4. 生成服务器证书请求
sudo openssl req -new -key server.key -sha256 -out server.csr
# 5. 使用CA证书签名服务器证书请求
sudo openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -CAcreateserial -out server.crt -days 3650 -sha256
在执行上述命令时,您或许需要提供一些信息,如国家、省份、市、组织、组织单位、电子邮件地址和常见名称(CN)。这些信息将用于生成证书请求和证书本身。
配置Nginx以使用SSL证书
生成证书后,需要配置Nginx以使用这些证书。以下是一个基本的Nginx配置示例,用于启用SSL并指定证书文件:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
ssl_prefer_server_ciphers on;
location / {
root /var/www/html;
index index.html index.htm;
}
}
请将`yourdomain.com`替换为您的主机名或域名,并将证书文件路径替换为您的SSL证书和私钥文件的实际路径。
重启Nginx以应用配置更改
配置完成后,需要重启Nginx以使更改生效:
sudo systemctl restart nginx
现在,当您访问您的网站时,它应该通过HTTPS协议提供内容,并使用您刚刚生成的自签名SSL证书。
测试SSL证书
为了验证SSL证书是否正常工作,可以使用在线工具或命令行工具进行测试。以下是一个使用命令行工具测试SSL证书的示例:
openssl s_client -connect yourdomain.com:443 -showcerts
如果一切正常,您应该会看到证书信息被打印出来。
总结
在Ubuntu 20.04上为Nginx创建自签名SSL证书是一个相对明了的过程,只需生成必要的密钥和证书,然后将它们配置到Nginx中即可。虽然自签名证书不提供第三方认证机构的信赖,但它们对于开发、测试或内部使用来说仍然非常有用。
请注意,自签名证书或许会在浏览器中引起警告,归因于浏览器默认不信赖自签名证书。如果需要,您可以手动导入CA证书到浏览器中,以避免这些警告。