免费SSR节点分享:https://ssrcloud.xyz/register?aff=4

使用 Let’s Encrypt 为网站制作ssl加密,启用https协议

VPS wandou 252℃ 0评论

http是明文传输,存在泄露个人隐私的风险,小站点一般对此没有多少关注,不过,新版chrome在登陆http站点的时候会提示说,”http协议的网站将被标记为不安全”,由此可见,民众的网络安全意识正在加强,所以,安装ssl证书以支持https访问还是很有必要的。

安装SSL证书很麻烦,而且收费,不过对于个人站点来说还有更多的选择,比如 Let's Encrypt 就是一个不错的方案,不仅免费,而且安装简单,几分钟就能搞定,缺点当然也有,就是要定时更新证书,因为证书有效期只有三个月。

安装 Let’s Encrypt

软件仓库一般都有,所以直接安装即可


# CentOS
yum install letsencrypt

# Ubuntu 或者 Debian
apt-get install letsencrypt

使用 Let’s Encrypt 获取证书

Let's Encrypt在验证的过程中会占用443端口,所以需要暂时关闭nginx以释放端口。


# 停止 nginx,释放端口
systemctl stop nginx

# 获取证书
letsencrypt certonly --standalone

# 同意条款之后,输入域名,两个以上的域名用空格隔开
wenjinyu.me www.wenjinyu.me monitor.wenjinyu.me drive.wenjinyu.me cloud.wenjinyu.me info.wenjinyu.me

只要几秒钟的验证就可以了,然后会提示证书存放在域名相应目录,比如 /etc/letsencrypt/wenjinyu.me

Let's Encrypt成功获取证书时的提示.png

需要注意的是,证书存放目录以第一个输入的域名为准,例如,如果此次输入的是www.wenjinyu.me wenjinyu.me ...,那么存放目录就会变成/etc/letsencrypt/www.wenjinyu.me

如果希望一条命令就实现,而不必另外手动输入,那么可以使用-d参数,同时也支持多个域名的同时验证:


letsencrypt certonly --standalone --email [email protected] -d wenjinyu.me -d www.wenjinyu.me -d monitor.wenjinyu.me -d drive.wenjinyu.me -d cloud.wenjinyu.me -d info.wenjinyu.me

使用证书

nginx的配置文件有两个,一个是 /etc/nginx/nginx.conf ,另一个是 /etc/nginx/conf.d/default.conf (或者是该文件夹下以.conf为后缀其他文件),只要往里面添加一个433端口的server即可:


# 编辑配置文件
vim /etc/nginx/conf.d/default.conf

# 添加443端口以及ssl证书路径
server {
listen 443 ssl;
server_name blog.wenjinyu.me;
ssl_certificate /etc/letsencrypt/live/wenjinyu.me/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/wenjinyu.me/privkey.pem;

location / {
root /var/www/wordpress; # 改成自己的网页存放路径
index index.php index.html index.htm;
try_files $uri $uri/ /index.php$is_args$args;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/wordpress; # 改成自己的网页存放路径
}
location ~ \.php$ {
root /var/www/wordpress; # 改成自己的网页存放路径
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

# 添加防火墙规则,放行443端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 重启nginx
systemctl restart nginx
  • 注意:在往配置文件里添加443端口的配置中,如果是按照本站之前的帖子搭建的博客,则可以只修改ssl证书所在路径

server {
listen 443 ssl;
server_name blog.wenjinyu.me;
ssl_certificate /etc/letsencrypt/live/wenjinyu.me/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/wenjinyu.me/privkey.pem;
}

此时可以在浏览器中输入 https://域名 ,进行访问,如本站是 https://blog.wenjinyu.me

http跳转

如果希望只受理 https 请求,那么可以在 http 设置跳转,即把 80 端口的请求跳转至 443


# 编辑配置文件
vim /etc/nginx/conf.d/default.conf

# 在 80 的 server 里添加跳转,注意替换网址
server {
listen 80;
server_name blog.wenjinyu.me;
rewrite ^/(.*)$ https://blog.wenjinyu.me/$1 permanent; # 添加本行
}

证书更新

Let’s Encrypt 的 ssl 证书有效期只有三个月,所以必须在三个月内进行证书更新,不过在证书过期之前会有官方发邮件进行通知,所以不必担心忘记


# 停止 Nginx, 释放端口
systemctl stop nginx

# 更新证书
letsencrypt certonly --standalone

# 启动 Nginx
systemctl start nginx
  • 注意:如果网站使用了CDN的话,在更新证书的时候需要把CDN暂停,否则网站验证会不通过。

linux 有自带的定时任务管理器 cron,也可以用来设置定时更新证书,这样就不用一直惦记着了

问题

  • 在证书获取与更新时,为何使用 standalone 而不是 webroot 模式?

Let’s Encrypt 提供了多种身份验证方式。与 standalone 相比,webroot 模式最大的优势在于没有宕机时间。然而 webroot 存在一些隐含的问题,它们是新手不易解决的。例如,webroot 需要在 nginx.conf 中添加特殊的规则以允许外界访问,但即便如此,该路径依旧被部分防火墙封杀。此外,启用了 301 跳转的服务器无法直接使用 webroot 更新证书,这期间需要反复修改配置文件,比 standalone 模式更为繁琐。十几秒的宕机时间对一般的网站来说可以忽略不计,因此我建议新手优先使用 standalone 模式。

原文链接:使用 Let’s Encrypt 为网站制作ssl加密,启用https协议

转载请注明:晨星科技 » 使用 Let’s Encrypt 为网站制作ssl加密,启用https协议

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址