在CentOS服务器上实现HTTPS安全,通常需要以下几个步骤:
首先,你需要一个SSL证书。你可以从以下几种方式获取:
你可以使用Certbot工具来获取和续订Let’s Encrypt证书。
# 安装Certbot
sudo yum install epel-release
sudo yum install certbot
# 获取证书
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
# 续订证书(通常每年续订一次)
sudo certbot renew --dry-run
CentOS上常用的Web服务器有Apache和Nginx。以下是配置示例:
编辑Apache配置文件(通常位于/etc/httpd/conf/httpd.conf或/etc/httpd/conf.d/ssl.conf),添加或修改以下内容:
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
重启Apache服务:
sudo systemctl restart httpd
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf),添加或修改以下内容:
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
重启Nginx服务:
sudo systemctl restart nginx
为了确保所有流量都通过HTTPS传输,你可以配置HTTP到HTTPS的重定向。
在Apache配置文件中添加以下内容:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
重启Apache服务:
sudo systemctl restart httpd
在Nginx配置文件中添加以下内容:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
重启Nginx服务:
sudo systemctl restart nginx
Let’s Encrypt证书通常有效期为90天,因此你需要设置自动续订。
Certbot提供了自动续订脚本,你可以将其添加到cron任务中:
sudo crontab -e
添加以下行:
0 0,12 * * * certbot renew --post-hook "systemctl reload httpd"
对于Nginx:
0 0,12 * * * certbot renew --post-hook "systemctl reload nginx"
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
通过以上步骤,你可以在CentOS服务器上实现HTTPS安全。