配置Linux服务器的SSL/TLS使用OpenSSL涉及几个步骤。以下是一个基本的指南,帮助你在Linux服务器上设置SSL/TLS证书:
大多数Linux发行版默认已经安装了OpenSSL。如果没有安装,可以使用包管理器进行安装。
# 在Debian/Ubuntu上 sudo apt-get update sudo apt-get install openssl # 在CentOS/RHEL上 sudo yum install openssl # 在Fedora上 sudo dnf install openssl
如果你只是测试或内部使用,可以生成一个自签名证书。
# 生成私钥 openssl genpkey -algorithm RSA -out private.key -aes256 # 生成证书签名请求 (CSR) openssl req -new -key private.key -out certificate.csr # 生成自签名证书 openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out certificate.crt
在生成CSR时,你需要提供一些信息,如国家、组织名称等。
对于生产环境,你应该从受信任的证书颁发机构(CA)获取证书。以下是获取Let’s Encrypt证书的示例:
# 安装Certbot sudo apt-get install certbot # Debian/Ubuntu sudo yum install certbot # CentOS/RHEL sudo dnf install certbot # Fedora # 获取证书 sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
Certbot会自动处理证书的获取和续期。
根据你使用的Web服务器(如Apache、Nginx等),配置SSL/TLS。
编辑Apache配置文件(通常是/etc/apache2/sites-available/yourdomain.com.conf
),添加以下内容:
<VirtualHost *:443> ServerName yourdomain.com ServerAlias www.yourdomain.com SSLEngine on SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem DocumentRoot /var/www/html <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 a2ensite yourdomain.com.conf sudo systemctl restart apache2
编辑Nginx配置文件(通常是/etc/nginx/sites-available/yourdomain.com
),添加以下内容:
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; root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } error_log /var/log/nginx/yourdomain.com.error.log; access_log /var/log/nginx/yourdomain.com.access.log; }
启用站点并重启Nginx:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
Let’s Encrypt证书每90天需要续期一次。Certbot可以自动续期证书。
sudo certbot renew --dry-run sudo certbot renew
你可以设置一个cron任务来自动执行续期:
0 0,12 * * * root certbot renew --post-hook "systemctl reload nginx"
确保你的SSL/TLS配置正确无误。
sudo openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
检查输出以确保没有错误,并且证书信息正确。
通过以上步骤,你应该能够在Linux服务器上成功配置SSL/TLS。