bash,sudo yum install nginx,
`,,2. 获取 ssl 证书和私钥。你可以使用自签名证书或从受信任的证书颁发机构(ca)获取。,,3. 将 ssl 证书和私钥复制到 nginx 服务器的适当目录中,
/etc/nginx/ssl/。,,4. 配置 nginx 使用 ssl 证书。编辑 nginx 配置文件,通常位于
/etc/nginx/conf.d/default.conf 或
/etc/nginx/nginx.conf,添加或修改以下内容以启用 ssl:,,
`nginx,server {, listen 443 ssl;, server_name your_domain.com;,, ssl_certificate /etc/nginx/ssl/your_certificate.crt;, ssl_certificate_key /etc/nginx/ssl/your_private.key;,, # other nginx configurations...,},
`,,5. 重启 nginx 服务以应用更改:,
`bash,sudo systemctl restart nginx,
``,,这样,你的 centos 服务器上的 nginx 就会使用 ssl 证书来加密传输数据了。在CentOS上安装Nginx并配置SSL证书,可以有效提升网站的安全性和数据传输的加密性,以下是一个详细的操作指南,包括安装Nginx、生成或获取SSL证书、配置Nginx以使用SSL证书等步骤。
一、安装Nginx
1、下载Nginx:
访问Nginx官网,选择适合你系统的版本进行下载。
对于CentOS 7,可以使用以下命令下载Nginx 1.20.2:
wget http://nginx.org/download/nginx-1.20.2.tar.gz
2、解压文件:
tar -zxvf nginx-1.20.2.tar.gz cd nginx-1.20.2
3、配置编译选项:
为了启用SSL支持,需要添加--with-http_ssl_module
选项:
./configure --prefix=/usr/local/nginx --with-http_ssl_module
4、编译并安装:
make make install
5、启动Nginx:
进入Nginx安装目录,启动Nginx:
/usr/local/nginx/sbin/nginx
或者,为了简化操作,可以配置systemctl服务来管理Nginx:
vim /etc/systemd/system/nginx.service
添加以下内容:
[Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target
启动Nginx并设置为开机启动:
systemctl start nginx systemctl enable nginx
二、生成或获取SSL证书
你可以从可信任的CA机构购买SSL证书,或者使用OpenSSL生成自签名证书用于测试,以下是使用OpenSSL生成自签名证书的步骤:
1、生成私钥:
openssl genrsa -des3 -out /etc/ssl/certs/yourdomain.key 2048
2、生成CSR(证书签名请求):
openssl req -new -key /etc/ssl/certs/yourdomain.key -out /etc/ssl/certs/yourdomain.csr -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=mofei/OU=mofei/CN=www.ffcc.com"
3、去除私钥中的密码(可选):
如果你不希望每次启动Web服务器时都输入私钥密码,可以去除私钥中的密码:
openssl rsa -in /etc/ssl/certs/yourdomain.key -out /etc/ssl/certs/yourdomain.key
4、生成自签名SSL证书:
openssl x509 -req -days 3650 -in /etc/ssl/certs/yourdomain.csr -signkey /etc/ssl/certs/yourdomain.key -out /etc/ssl/certs/yourdomain.crt
三、配置Nginx以使用SSL证书
1、编辑Nginx配置文件:
打开Nginx的主配置文件(通常位于/usr/local/nginx/conf/nginx.conf
或/etc/nginx/nginx.conf
),并在其中添加一个新的server块来配置HTTPS:
server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/ssl/certs/yourdomain.crt; ssl_certificate_key /etc/ssl/certs/yourdomain.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
将yourdomain.com
替换为你的实际域名,并确保证书文件和私钥文件的路径正确。
2、测试配置:
在重新加载Nginx配置之前,建议先测试配置是否正确:
nginx -t
3、重新加载Nginx:
如果配置测试通过,重新加载Nginx以应用更改:
nginx -s reload
四、HTTP自动跳转HTTPS(可选)
为了提高安全性,你可能希望将所有HTTP请求自动重定向到HTTPS,这可以通过在Nginx配置文件中添加一个额外的server块来实现:
server { listen 80; server_name yourdomain.com; return 301 https://$host$request_uri; }
同样,请将yourdomain.com
替换为你的实际域名。
五、常见问题及解答(FAQs)
Q1: Nginx启动失败,提示“SSL certificate and key could not be loaded”怎么办?
A1: 这个问题通常是由于证书文件或私钥文件不存在、路径错误或权限不足导致的,请检查以下几点:
确保证书文件和私钥文件存在于指定的路径。
确保Nginx用户(通常是nobody
或nginx
)有权读取这些文件。
如果问题仍然存在,可以尝试使用绝对路径指定证书文件和私钥文件。
Q2: 如何更改Nginx使用的SSL协议版本?
A2: 你可以在Nginx配置文件中的ssl_protocols
指令中指定要使用的SSL协议版本,要仅使用TLSv1.2和TLSv1.3,可以这样配置:
ssl_protocols TLSv1.2 TLSv1.3;
移除旧的SSL协议版本(如SSLv3和TLSv1)可以提高安全性,但也可能影响与某些老旧客户端的兼容性。