HTTPS服务器搭建, 免费ssl证书申请(Let’sEncrypt)

HTTPS

HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。

CentOS7 + nginx安装和使用Let’s Encrypt的完整过程

必要条件

  1. 拥有一个域名,例: www.195440.com
  2. 在域名服务器创建一条A记录,指向主机的公网IP地址( 也就是说此方法不适合内网 )
  3. 搭建一个nginx可访问到的站点

  • 内网搭建测试https服务器可在外网申请认证
  • 证书key拿回内网服务器并将认证域名指向内网ip即可

申请Let’sEncrypt证书

安装certbot工具

# 此为软件包扩展, 非必须执行
yum install -y epel-release
yum install -y certbot

使用certbot命令申请证书

# 使用方法:certbot certonly --webroot -w [Web站点目录] -d [站点域名] -m [联系人email地址] --agree-tos
certbot certonly --webroot -w /usr/share/nginx/html/ -d www.195440.com -m 195440@qq.com --agree-tos

注:联系人email地址要填写真实有效的,letsencrypt会在证书在过期以前发送预告的通知邮件。 申请成功后,会显示以下Congratulations信息

证书的保存位置在:

/etc/letsencrypt/live/jd.195440.com/
用户证书 		                             cert.pem 
中间证书 		                             chain.pem 
证书链, chain.pem + cert.pem	                     fullchain.pem 
证书私钥 		                             privkey.pem 

查看证书有效期的命令

openssl x509 -noout -dates -in /etc/letsencrypt/live/jd.195440.com/cert.pem

设置定时任务自动更新证书

# 更新证书
certbot renew --dry-run
# 如果不需要返回的信息,可以用静默方式
certbot renew --quiet

注意:更新证书时候网站必须是能访问到的

# 可以使用crontab定时更新,例如:
# 每月1号5时执行执行一次更新,并重启nginx服务器
00 05 01 * * /usr/bin/certbot renew --quiet && /bin/systemctl restart nginx

Nginx https配置

server {
	listen       443 ssl http2 default_server;
	listen       [::]:443 ssl http2 default_server;
	server_name  _;

	# letsencrypt生成的文件
	ssl_certificate /etc/letsencrypt/live/jd.195440.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/jd.195440.com/privkey.pem;
	
	ssl_session_cache shared:SSL:1m;
	ssl_session_timeout  10m;
	ssl_ciphers HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers on;

	# Load configuration files for the default server block.
 

	location / {
		proxy_pass  http://www.qq.com; # 测试转发
	}

	error_page 404 /404.html;
		location = /40x.html {
	}

	error_page 500 502 503 504 /50x.html;
		location = /50x.html {
	}
}

测试转发

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注