在Ubuntu系统上使用Nginx生成SSL证书,通常有两种方法:使用Let’s Encrypt免费证书或使用自签名证书。以下是这两种方法的详细步骤:
安装Certbot和Nginx插件
sudo apt update
sudo apt install certbot python3-certbot-nginx
获取SSL证书 运行Certbot命令来获取并安装SSL证书。你需要提供你的域名和电子邮件地址。
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot会自动配置Nginx以使用新生成的SSL证书,并创建一个定时任务来自动续期证书。
验证证书 Certbot会提示你进行一些验证步骤,通常是HTTP-01挑战。Certbot会自动完成这些步骤。
重启Nginx 证书安装完成后,Certbot会提示你重启Nginx以应用更改。
sudo systemctl restart nginx
生成私钥
sudo openssl genrsa -out /etc/ssl/private/yourdomain.com.key 2048
生成证书签名请求(CSR)
sudo openssl req -new -key /etc/ssl/private/yourdomain.com.key -out /etc/ssl/certs/yourdomain.com.csr
在生成CSR的过程中,你需要填写一些信息,如国家、州、城市、组织名称等。
生成自签名证书
sudo openssl x509 -req -days 365 -in /etc/ssl/certs/yourdomain.com.csr -signkey /etc/ssl/private/yourdomain.com.key -out /etc/ssl/certs/yourdomain.com.crt
配置Nginx使用SSL证书
编辑Nginx配置文件(通常位于/etc/nginx/sites-available/yourdomain.com),添加SSL配置:
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/ssl/certs/yourdomain.com.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /var/www/html;
index index.html index.htm;
}
}
启用SSL配置 创建一个符号链接以启用Nginx配置:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
测试Nginx配置
sudo nginx -t
重启Nginx
sudo systemctl restart nginx
选择适合你需求的方法来生成SSL证书,并确保你的Nginx配置正确无误。