前言
在当今互联网环境下,HTTPS已成为网站安全的标配,它通过SSL/TLS协议为网站数据传输提供加密,保障用户信息的安全。申请并部署免费SSL证书,不仅能够提升网站的专业形象,还能增强用户信任。本文将详细介绍如何在知名免费SSL证书提供商Let's Encrypt申请免费SSL证书,并指导如何在Nginx和Apache服务器上安装和使用证书。
这里推荐:
OHTTPS - 免费HTTPS证书、自动化更新、自动化部署、自动化监控
ohttps.com提供了类似于acme.sh的功能,不过提供了友好的管理界面,可申请Let's Encrypt免费通配符类型证书,还提供了证书吊销、到期前提醒、自动更新、自动部署功能。
另外比acme.sh增加了一些非常实用的功能,主要包括可自动部署至阿里云、腾讯云、七牛云的负载均衡、内容分发CDN、SSL证书列表等,并可自动部署至多个nginx容器中。
如果你有在证书更新后自动部署至多个不同节点的需求,使用ohttps.com就对了,在这里强烈推荐大家使用ohttps.com申请和管理Let's Encrypt颁发的免费HTTPS证书。申请链接:
https://ohttps.com
操作步骤
1. 选择SSL证书提供商
首先,您需要选择一个可靠的SSL证书提供商。目前,有许多提供免费SSL证书的服务商,其中最受欢迎的是Let's Encrypt。Let's Encrypt是一个非营利组织,它提供免费的SSL证书,并且这些证书被广泛认可和接受。
2. 申请免费SSL证书
使用Let's Encrypt申请证书
Let's Encrypt提供了一个名为Certbot的自动化工具,可以帮助您轻松申请和管理SSL证书。
Certbot简介
Certbot是EFF(Electronic Frontier Foundation)开发的一个开源软件工具,旨在自动化获取和更新Let's Encrypt SSL证书的过程。Certbot支持多种操作系统和Web服务器,包括Apache和Nginx,使其成为一个非常灵活和强大的工具。
以下是使用Certbot申请免费SSL证书的步骤:
-
安装Certbot: 您需要先在服务器上安装Certbot。根据您的服务器操作系统和Web服务器类型,安装方法会有所不同。例如,如果您使用的是Ubuntu和Apache,可以使用以下命令安装Certbot:
#如果服务器是apache sudo apt update sudo apt install certbot python3-certbot-apache #在Ubuntu上安装Certbot,服务器是nginx sudo apt update sudo apt install certbot python3-certbot-nginx
-
使用Certbot获取SSL证书
安装Certbot后,您可以使用以下命令来获取SSL证书:
使用Apache插件获取证书
sudo certbot --apache
使用Nginx插件获取证书
sudo certbot --nginx
在执行上述命令时,Certbot会引导您完成一系列设置步骤,包括输入您的电子邮件地址和同意服务条款。Certbot还会自动配置您的Web服务器以使用新的SSL证书。
-
验证证书: 证书获取成功后,Certbot会自动配置您的Web服务器以使用SSL。您可以通过访问您的网站并查看浏览器地址栏中的锁形图标来验证SSL证书是否已正确安装。
3. 使用SSL证书
配置Web服务器
一旦您获得了SSL证书,您需要配置您的Web服务器以使用它。以下是一些常见的Web服务器配置示例:
Apache
如果您使用的是Apache服务器,Certbot通常会自动为您配置SSL。您可以通过编辑Apache配置文件来手动配置SSL,例如:
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost>
Nginx
如果您使用的是Nginx服务器,您可以编辑Nginx配置文件来配置SSL,例如:
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;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
自动更新证书
Let's Encrypt颁发的SSL证书有效期为90天。为了确保证书始终有效,您需要设置自动更新。Certbot提供了一个简单的命令来实现这一点:
sudo certbot renew --dry-run
您可以将此命令添加到服务器的cron作业中,以确保证书定期更新。例如,您可以编辑cron作业文件:
sudo crontab -e
然后添加以下行:
0 0 * * * /usr/bin/certbot renew --quiet
这行命令将在每天午夜运行,检查证书是否需要更新,并在需要时自动更新证书。
更便捷的方式(okhttps)
上述命令行方式需要熟悉使用,如果想要更便捷的方式,可以在okhttps或FreeSSL.cn网站上申请。界面操作更简单直观。
举例:
在FreeSSL.cn申请免费SSL证书的基本步骤如下:
访问FreeSSL网站: 打开浏览器,访问 FreeSSL.cn。
1.开始申请:
输入您想要为其申请SSL证书的域名。
选择您需要的证书类型,比如单域名或多域名证书。
点击“创建”或“创建免费的SSL证书”。
2.提供联系信息:
输入您的邮箱地址,这将用于接收证书相关的信息和通知。
核实申请信息无误后,继续下一步。
3.域名验证(DCV):
选择验证方式,常见的有TXT记录验证、CNAME记录验证或文件上传验证。
TXT记录验证:按照提示,在您的域名DNS设置中添加一条TXT类型的记录,内容由FreeSSL提供。
CNAME记录验证:某些情况下可能需要添加CNAME记录,同样根据提供的值设置。
文件上传:上传FreeSSL提供的特定文件至您网站的根目录。
完成验证设置后,点击验证按钮,等待验证通过。
4.证书下载与安装:
验证成功后,您将能够下载SSL证书。通常会包括证书文件(.crt或.pem)、私钥文件(.key)以及可能的中间证书链(.ca-bundle或单独的文件)。申请完成。
最后根据您的服务器类型(如Apache、Nginx、IIS等),按照相应的教程安装使用这些证书文件。
如何使用证书
如果云服务器使用的有宝塔等便捷web管理工具,则添加使用证书很简单。
如果手动安装,以Nginx为例,使用证书的基本步骤如下:
备份原有配置:在修改Nginx配置文件之前,先做好备份。
编辑Nginx配置文件:
找到您的Nginx站点配置文件,通常位于 /etc/nginx/sites-available/your_domain.conf 或相似路径。修改或添加以下内容:
server {
listen 443 ssl;
server_name your_domain.com www.your_domain.com;
ssl_certificate /path/to/your_certificate.crt;
ssl_certificate_key /path/to/your_private_key.key;
# 如果有中间证书,也需要包含
ssl_trusted_certificate /path/to/your_intermediate.pem;
# 其他SSL设置,如协议版本、密码套件等
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "YOUR_CIPHER_SUITE";
}
替换上述路径为实际存放证书和私钥的路径。
测试配置:
运行 sudo nginx -t 测试配置是否正确。
重启Nginx:
如果配置测试通过,运行 sudo systemctl restart nginx 或 sudo service nginx restart 重启Nginx服务。
检查HTTPS:
访问 https://your_domain.com 检查SSL证书是否已正确安装并生效。
请根据实际情况调整上述步骤中的具体路径和配置项。
以下为我的nginx配置(我的域名:yangqq.site):
server
{
listen 80;
listen 443 ssl http2;
server_name yangqq.site;
index index.html index.htm default.htm default.html;
root /www/wwwroot/imovie/imovie;
#SSL-START SSL相关配置
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /www/server/panel/vhost/cert/imovie/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/imovie/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
#ERROR-PAGE-START 错误页相关配置
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#REWRITE-START 伪静态相关配置
include /www/server/panel/vhost/rewrite/go_imovie.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|package.json|package-lock.json|\.env) {
return 404;
}
#一键申请SSL证书验证目录相关设置
location /.well-known/ {
root /www/wwwroot/java_node_ssl;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
# HTTP反向代理相关配置开始 >>>
location ~ /purge(/.*) {
proxy_cache_purge cache_one 127.0.0.1$request_uri$is_args$args;
}
##代理转向指向我的golang后台服务端口8000
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host 127.0.0.1:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_set_header X-Host $host:$server_port;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# HTTP反向代理相关配置结束 <<<
access_log /www/wwwlogs/imovie.log;
error_log /www/wwwlogs/imovie.error.log;
}
其他资源
快速上手 | OHTTPS
免费SSL证书申请,并设置自动续期_免费ssl证书自动续期-CSDN博客
这 6 大免费申请 HTTPS 证书的方法!没人会告诉你-CSDN博客
设置 A 记录 - DNSPod 服务与支持
如何申请免费SSL证书,并部署到Nginx?_let's encrypt免费证书-CSDN博客