在VPS上设置免费SSL证书通常涉及到几个步骤,包括生成密钥和证书签名请求(CSR)、从证书颁发机构(CA)获取SSL证书,以及配置服务器以使用新的SSL证书,以下是详细的步骤:
(图片来源网络,侵删)1. 准备环境
确保你的VPS操作系统已安装以下软件:
OpenSSL(用于生成CSR和私钥)
Apache 或 Nginx(用于配置SSL证书)
安装OpenSSL(如果尚未安装)
对于基于Debian/Ubuntu的系统:
sudo aptget update sudo aptget install openssl
对于基于CentOS/RHEL的系统:
sudo yum update sudo yum install openssl
2. 生成私钥和CSR
创建目录来存储密钥和证书文件
mkdir ~/ssl_certs cd ~/ssl_certs
生成私钥
openssl genrsa out private.key 2048
生成CSR
openssl req new key private.key out certificate.csr
在生成CSR时,将要求你提供一些信息,如你的国家代码、州/省、城市、组织名称、部门名称、域名和电子邮件,这些信息将被包含在证书中。
3. 获取免费SSL证书
有许多CA提供免费SSL证书服务,如Let's Encrypt,你可以使用它们提供的客户端软件来自动生成和续订证书。
安装Certbot(Let's Encrypt的官方客户端)
对于基于Debian/Ubuntu的系统:
sudo aptget install softwarepropertiescommon sudo addaptrepository ppa:certbot/certbot sudo aptget update sudo aptget install certbot
对于基于CentOS/RHEL的系统,可能需要手动安装Certbot。
使用Certbot获取证书
sudo certbot certonly webroot w /var/www/html d example.com d www.example.com
此命令将为example.com及其子域获取证书。webroot
选项指定了一个由你控制的目录,Certbot将在此创建临时文件以验证你对域名的控制。
4. 配置Web服务器使用SSL证书
对于Apache
编辑Apache配置文件(通常是/etc/apache2/sitesavailable/000default.conf
),并添加以下内容:
<VirtualHost *:80> ServerName www.example.com Redirect / https://www.example.com </VirtualHost> <VirtualHost *:443> ServerName www.example.com SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem </VirtualHost>
对于Nginx
编辑Nginx配置文件(通常是/etc/nginx/sitesavailable/default
),并添加以下内容:
server { listen 80; server_name www.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # 其他SSL配置参数... }
5. 重启Web服务器
对于Apache
sudo systemctl restart apache2
对于Nginx
sudo systemctl restart nginx
6. 自动续订SSL证书
由于Let's Encrypt的SSL证书有效期为90天,因此需要定期续订,可以通过设置定时任务来自动执行此操作。
设置Certbot自动续订
sudo crontab e
在打开的编辑器中,添加以下行(根据你的时间设置调整时间):
0 0,12 * * * python c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew quiet
这将在每天的0点和12点尝试续订即将过期的证书。
通过以上步骤,你应该能够在VPS上成功设置免费的SSL证书,并通过自动续订保持其有效性。