使用let's encrypt免费ssl证书启用网站https

简介: 网站启用https访问,首先需要一个证书机构颁发的ssl证书,目前给个人免费颁发证书的机构,比较好的是:let's encrypt。Let's Encrypt是由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起公共的免费SSL项目,免费,安装方便,配置简单,值得信赖。

网站启用https访问,首先需要一个证书机构颁发的ssl证书,目前给个人免费颁发证书的机构,比较好的是:let's encrypt。Let's Encrypt是由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起公共的免费SSL项目,免费,安装方便,配置简单,值得信赖。目前签发的加密证书已经覆盖了超过 1 亿个网站,且有望在 2018 年底前达到 1.5 亿+。2018年Let's Encrypt 发布的 ACME v2 已正式支持通配符证书,可以支持类似*.xx.com的证书,使用更加方便。
let's encrypt的证书现在支持自动颁发安装,客户端工具为certbot,官方网站:https://certbot.eff.org/,不同的操作系统,certbot程序名称不一样,我的服务器为ubuntu,对应的程序是: letsencrypt

创建证书

安装let's encrypt 客户端

sudo apt-get update
sudo apt-get install letsencrypt

使用letsencrypt创建证书,如下所示,可以指定多个域名

letsencrypt certonly --webroot -w /var/www/blog -d blog.xxx.org -w /var/www/thing -d thing.is -d m.thing.is

生成的域名保存在目录:/etc/letsencrypt/live/blog.xxx.org/中:

  • cert.pem: 域名证书
  • chain.pem: Let's Encrypt chain 证书
  • fullchain.pem: cert.pem 和 chain.pem 组合证书
  • privkey.pem: 证书私钥

生成强Diffie-Hellman Group(可选)

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

配置nginx

修改nginx配置文件,将对应域名修改为https访问,修改server配置如下

server {
  listen 443 ssl  http2 default_server;
  root /var/www/blog; # 这里是你网站的路径 路径下包含index.html等一系列文件
  index index.html index.htm;

  server_name blog.hutang.us;
  ssl_certificate /etc/letsencrypt/live/blog.hutang.us/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/blog.hutang.us/privkey.pem;
  ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
  ssl_ecdh_curve secp384r1;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_session_tickets off;
  ssl_stapling on;
  ssl_stapling_verify on;

  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  #允许访问let's encrypt 的webroot 插件目录
  location ~ /.well-known {
                allow all;
  }
}

http访问重写至https

server {
  listen 80;
  server_name blog.xxx.org;
  rewrite ^(.*)$ https://$host$1 permanent;
}

其他域名重定向

server {
  server_name xxx.org;
  return 301 https://blog.xxx.org$request_uri;
}

配置完成以后,重启nginx: sudo systemctl restart nginx

然后就可以通过https访问你的网站了,如图:


img_cfa268b6654aeb1bfc37861d47b31d34.png
image.png

证书更新

let's encrypt的证书有效期为3个月,到期之前需要重新生成才能继续使用,通过以下命令重新生成证书:
letsencrypt renew

可以配置计划任务定时更新证书,以免忘记。

配置systemd 计划任务

  • 创建letsencrypt服务,新建文件: /etc/systemd/system/letsencrypt.service,输入以下内容:
[Unit]
Description=letsencrypt renew
 
[Service]
Type=simple
ExecStart=/usr/bin/letsencrypt renew
ExecStop=
  • 启用服务
    sudo systemctl enable letsencrypt.service
  • 创建定时器,新建文件: /etc/systemd/system/letsencrypt.timer 输入以下内容:
[Unit]
Description=run letsencrypt renew every day
 
[Timer]
OnBootSec=10min
OnUnitActiveSec=12h
Unit=letsencrypt.service

[Install]
WantedBy=multi-user.target

OnBootSec表示系统启动后执行
官方建议计划为每12小时执行一次,实际上renew程序在证书到期之前都不会执行任何操作。

  • 启用定时器,开机启动
    sudo systemctl enable letsencrypt.timer
  • 开启定时器
    sudo systemctl start letsencrypt.timer
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
5天前
|
安全 搜索推荐 数据建模
解决网站“不安全”、“不受信”、“排名下降”,你需要——「SSL证书」
SSL证书是网络安全的关键,用于加密和验证网站身份,保护用户数据安全,防止信息被窃取。它分为DV、OV、EV和IV四种类型,每种验证网站身份的程度不同。DV证书快速签发,OV和EV证书提供更高级别的身份验证,EV证书曾在浏览器地址栏显示绿色。目前,DV证书占据市场大部分份额。SSL证书还有单域、通配符和多域之分,有效期曾从多年逐渐缩短至90天,以增强安全性。部署SSL证书能提升用户信任,优化SEO排名,并符合网络安全法规要求。
解决网站“不安全”、“不受信”、“排名下降”,你需要——「SSL证书」
|
5天前
|
网络协议 Java 应用服务中间件
Springboot+ubuntu+Let‘s Encrypt配置https
Springboot+ubuntu+Let‘s Encrypt配置https
46 0
|
5天前
|
前端开发 应用服务中间件 网络安全
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
90 0
|
5天前
|
域名解析 网络协议 应用服务中间件
阿里云SSL证书配置(HTTPS证书配置)
该内容是一个关于如何在阿里云上准备和购买SSL证书,以及如何为网站启用HTTPS的步骤指南。首先,需要注册并实名认证阿里云账号,然后在SSL证书控制台选择证书类型、品牌和时长进行购买。申请证书时填写域名信息,并进行DNS验证,这包括在阿里云域名管理板块添加解析记录。完成验证后提交审核,等待证书审核通过并下载Nginx格式的证书文件。最后,将证书配置到网站服务器以启用HTTPS。整个过程涉及账户注册、实名认证、证书购买、DNS设置和证书下载及安装。
183 0
|
5天前
|
前端开发 应用服务中间件 网络安全
http转为https,ssl证书安装及nginx配置
http转为https,ssl证书安装及nginx配置
68 1
|
5天前
|
安全 网络安全 数据安全/隐私保护
SSL证书过期后网站还能正常访问吗
SSL证书过期后,网站仍可访问,但浏览器会出现警告,降低用户信任度,增加数据安全风险。过期可能导致安全性下降、信任问题、浏览器限制及合规性风险。管理员需关注证书有效期,及时续费或更换,并选择可靠提供商。
SSL证书过期后网站还能正常访问吗
|
5天前
|
存储 缓存 安全
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
130 0
|
5天前
|
弹性计算 网络安全 Apache
windows server2012服务器下PHPstudy配置ssl证书(https配置)
windows server2012服务器下PHPstudy配置ssl证书(https配置)
79 0
|
5天前
|
安全 Java 网络安全
HTTPS的TLS/SSL协议详解及Java代码示例
HTTPS的TLS/SSL协议详解及Java代码示例
315 0
|
5天前
|
安全 搜索推荐 算法
网站使用SSL证书的重要性
网站使用SSL证书的重要性