申请免费https证书及nginx相关配置

96
轻晃
2018.06.27 18:42* 字数 1396

标签: https、centos7、nginx、安全评估


内容目录

[TOC]

1、https和ssl证书相关知识

通常所说的 HTTPS 协议,就是“HTTP 协议”和“SSL/TLS 协议”的组合,“HTTP over SSL”,实际上是在原有的 HTTP 数据外面加了一层 SSL 的封装。HTTP 协议原有的 GET、POST 之类的机制,基本上原封不动。

如果不加https,网络流量需要经过网络运营商( ISP )的线路才能到达公网。如果你使用的是明文的 HTTP,ISP 很容易就可以在你访问的页面中植入广告,所以,当初设计 HTTPS 的时候,还有一个需求是“确保 HTTP 协议的内容不被篡改”。

2、申请免费的ssl证书

1、腾讯云申请证书

腾讯云提供一年的免费ssl证书,入口:腾讯云 -> ssl证书管理 -> 申请证书

image_1ch05tlhep9u10hu1juofpc679.png-44.3kB
image_1ch05tlhep9u10hu1juofpc679.png-44.3kB

需注意:从2018年1月1日起,同一主域最多只能申请20张亚洲诚信品牌免费型DV版SSL证书(一级域名及其子域名均属于同一主域,例如 domain.com、ssl.domain.com、ssl.ssl.domain.com 都属于同一主域)

2、手动DNS验证

image_1ch068c6l11ebed98bcelid0s13.png-18.5kB
image_1ch068c6l11ebed98bcelid0s13.png-18.5kB

这里选择手动DNS验证,确认申请

image_1ch06a3a218f3aekp0fqj117d21g.png-9.8kB
image_1ch06a3a218f3aekp0fqj117d21g.png-9.8kB

查看证书详情如下:

image_1ch06cgais181a731gj4kuspg32d.png-26.6kB
image_1ch06cgais181a731gj4kuspg32d.png-26.6kB

切到阿里云平台 -> 云解析DNS

按照上图证书详情在阿里云域名解析处添加如下一条记录:

image_1ch0b1forl6751pnehuqu1k1i9.png-7.8kB
image_1ch0b1forl6751pnehuqu1k1i9.png-7.8kB

详情如下:


image_1ch0bg0f2160q1jmpo8l1t2rghsm.png-31.5kB
image_1ch0bg0f2160q1jmpo8l1t2rghsm.png-31.5kB

返回腾讯云 -> ssl控制台

image_1ch0bjjd140ns12vo9aln11sl1j.png-22.7kB
image_1ch0bjjd140ns12vo9aln11sl1j.png-22.7kB

只要阿里云那边解析成功,腾讯云这边就自动成功,有时候需要等待10分钟左右。

验证成功如图:


image_1ch0boh418gvogg13221ce386e20.png-10.5kB
image_1ch0boh418gvogg13221ce386e20.png-10.5kB

点击右侧下载证书

3、Nginx配置

1、centos7系统下安装nginx

yum install -y nginx

利用yum安装nginx,如果出现No package nginx available,说明当前yum源缺少nginx资源,需要添加CentOS 7 Nginx yum资源库。

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

然后再yum install,等待安装。

启动nginx:

systemctl start nginx.service

centos7 开机自动启动

systemctl enable nginx.service

2、nginx配置信息

网站文件存放默认目录:

/usr/share/nginx/html

网站默认站点配置:

/etc/nginx/conf.d/default.conf

自定义Nginx站点配置文件存放目录:

/etc/nginx/conf.d/

Nginx全局配置:

/etc/nginx/nginx.conf

查看当前服务器公网ip:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

3、nginx页面不能正常访问排除方法

1、检查服务端服务是否启动成功

查看nginx服务是否启动


image_1ch4q5j7ifsr14nl313qv1b099.png-7.4kB
image_1ch4q5j7ifsr14nl313qv1b099.png-7.4kB

检查80端口是否在监听状态


image_1ch4q79rg1grlpef13lo1fohb7um.png-3.6kB
image_1ch4q79rg1grlpef13lo1fohb7um.png-3.6kB
2、在服务端使用wget和curl测试下返回的是否正常
curl 127.0.0.1
image_1ch4qkart2gv1lv21m2i16l0r2213.png-21.7kB
image_1ch4qkart2gv1lv21m2i16l0r2213.png-21.7kB

出现这个说明服务端的nginx安装正确。

3、如果还是访问不了,检查服务器防火墙
systemctl status firewalld 
image_1ch4qqave13rruc4thhk3s17eb1g.png-7.8kB
image_1ch4qqave13rruc4thhk3s17eb1g.png-7.8kB
firewall-cmd --zone=public --list-ports
image_1ch4qs6e416ln1set1ivj17b1191o1t.png-3.7kB
image_1ch4qs6e416ln1set1ivj17b1191o1t.png-3.7kB

如果80端口没有开启,则开启80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

更新防火墙规则: firewall-cmd --reload

出现以下页面说明nginx安装好了。


image_1ch4r14uhp5h1b131qpa1vek141n2a.png-21kB
image_1ch4r14uhp5h1b131qpa1vek141n2a.png-21kB

4、centos7配置FTP服务

1、客户端filezilla

站点管理器 - 新站点

image_1ch53vgvouek1mp810p21o761sal2n.png-37.8kB
image_1ch53vgvouek1mp810p21o761sal2n.png-37.8kB
2、服务器开启ftp服务(centos7)

安装vsftpd

yum install vsftpd -y

启动vsftpd

service vsftpd start

加入开机启动

chkconfig vsftpd on

启动后可以看到系统正在监听21端口

netstat -nltp | grep 21

vsftpd的文件说明
vsftpd.conf:主要配置文件
ftpusers:配置禁止访问ftp服务器的用户列表
user_list:配置用户访问控制

配置阻止匿名用户访问和切换根目录

vi /etc/vsftpd/vsftp.conf

找到以下两处修改
禁止匿名用户
anonymous_enable=NO
文件末尾添加
allow_writeable_chroot=YES
创建ftp用户

useradd ftpuser

为用户设置密码

echo "xxx" | passwd ftpuser --stdin

限制上步创建的用户只能通过ftp访问

usermod -s /sbin/nologin ftpuser

为用户分配主目录

mkdir -p /home/ftp/pub

创建欢迎文件

echo "welcome to use ftp">/home/ftp/welcome.txt

设置访问权限

chmod a-w /home/ftp && chmod 777 -R /home/ftp/pub

设置为用户主目录

usermod -d /home/ftp ftpuser

保存后重启vsftpd

service vsftpd restart

防火墙开启21端口,如上
如图即成功:


image_1ch54km4d1hrs42dhfn1p8b1hj64j.png-6.6kB
image_1ch54km4d1hrs42dhfn1p8b1hj64j.png-6.6kB

5、Nginx配置https

1、将证书导入服务器

用ftp将nginx的两个证书文件上传倒服务器


image_1ch55ikba1ft6hp81dv95gvbfb50.png-4.7kB
image_1ch55ikba1ft6hp81dv95gvbfb50.png-4.7kB
2、修改nginx配置
cd /etc/nginx/
image_1ch5f8ma11s6h1sjd10c4ba1epd5d.png-4.1kB
image_1ch5f8ma11s6h1sjd10c4ba1epd5d.png-4.1kB

两个配置文件,1是nginx.conf,即总配置文件,文件中最后一行指向自定义配置文件*.conf


image_1ch5fbhbn1vjrnm91tj0ve04lm5q.png-19.8kB
image_1ch5fbhbn1vjrnm91tj0ve04lm5q.png-19.8kB
cd conf.d
vi default.conf

在自定义配置文件中做nginx-server的配置:


image_1ch5fensb2h61oh61mcb2vnlb67.png-20.9kB
image_1ch5fensb2h61oh61mcb2vnlb67.png-20.9kB

如箭头所示,rewrite将80转发倒443端口,443端口监听,开启https
crt和key即之前传上来的两个文件,路径不能错。
root后的路径也不能错,否则找不到文件。

配置完成之后一定要重启nginx

nginx -s reload 或 systemctl restart nginx

最后一定要查看防火墙是否开启了443端口

image_1ch5fnv5d1pf3d7p61t9m919o874.png-3.6kB
image_1ch5fnv5d1pf3d7p61t9m919o874.png-3.6kB
3、SSL配置优化,启用http2

HTTP2在协议上真正要求不同的Request可以在同一个Connection上交错进行,真正做到多路复用。所带来的好处显而易见,更少的Connection,更好的并发,更高效的网络资源利用.
修改配置文件,启用HTTP2,如下:
server {
listen 8443 ssl http2 default_server; # 增加 http2 default_server
server_name 192.168.0.107;
...
}

4、安全评估报告

测试地址:https://myssl.com/
对证书信息,协议套件,SSL漏洞,兼容性都会进行测试并评级

image_1ch5hr1fb1oqu1l291ciocl54fn7h.png-35.9kB
image_1ch5hr1fb1oqu1l291ciocl54fn7h.png-35.9kB

可优化:去掉TLS1.0,

降级原因:没有优先使用FS系列加密套件,降级为B

用推荐的加密套件,查询地址:https://cipherli.st/
选用nginx相对应的加密套件:

image_1ch5hv4e114pl1jnud114b21b007u.png-8.5kB
image_1ch5hv4e114pl1jnud114b21b007u.png-8.5kB

再进行域名评估:


image_1ch5i0ef71kkh166g2ds1g6i13qm8b.png-41.6kB
image_1ch5i0ef71kkh166g2ds1g6i13qm8b.png-41.6kB

——end

IT相关
Web note ad 1