在nginx上启用http2,开启ssl,开启HSTS

一.升级openssl

如果系统的openssl版本较低,比如低于 1.0.2 ,先升级下
1.安装必要软件

yum install gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel 

2.获取新版openssl,并解压

wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
tar -zxvf openssl-1.0.2l.tar.gz

3.编译安装

cd openssl-1.0.2l
./config
make && make install

4.移除旧版本 OpenSSL

mv /usr/bin/openssl /tmp/
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

5.检查是否为新版本了

# openssl version   
OpenSSL 1.0.2l  25 May 2017

二.升级nginx

通过yum安装的nginx版本虽然支持http2了,但由于使用的openssl版本还是低版本,所以要重新编译安装下
1.准备必要工具

yum -y install libxml2 libxml2-devel libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed GeoIP GeoIP-devel GeoIP-data gperftools-devel

2.获取新的nginx,并解压

wget https://nginx.org/download/nginx-1.13.3.tar.gz
tar zxvf nginx-1.13.3.tar.gz

3.配置编译项

./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-openssl=../openssl-1.0.2l
#这里注意下,最后的--with-openssl指向的是刚才解压的openssl那个路径
#如果遇到某个错误无法完成,google下这个错误,安装相应的依赖后再次configure

4.编译安装

make 
make install

5.查看下是否是新版本了

nginx -V

三.获取ssl证书

ssl证书分免费和收费的,看自己的需求。免费的国内云主机厂商基本都会提供,我这次使用阿里云的。
步骤如下:

登录:阿里云控制台,产品与服务,证书服务,购买证书。
购买:证书类型选择 免费型DV SSL,然后完成购买。
补全:在 我的证书 控制台,找到购买的证书,在操作栏里选择 补全。填写证书相关信息。
域名验证:可以选择 DNS,如果域名用了阿里云的 DNS 服务,再勾选一下 证书绑定的域名在 阿里云的云解析。
上传:系统生成 CSR,点一下 创建。
提交审核。
如果一切正常,10 分钟左右,申请的证书就会审核通过。

审核通过后,将证书导出,并上传到nginx服务器上,放到nginx对应目录下,比如cert目录

mkdir /etc/nginx/cert   

参考:https://ninghao.net/blog/4449

四.配置nginx

关键配置文件如下,注意替换下相应的参数

server {
        #开启HSTS
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        listen 443 ssl http2 default_server;
        server_name xiaoxiaoguo.cn www.xiaoxiaoguo.cn; #这里替换成实际的域名
        ssl on;
        ssl_certificate   cert/214212024460825.pem; #注意证书名称
        ssl_certificate_key  cert/214212024460825.key;#注意证书名称
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
}

五.启用新配置,并验证

systemctl reload nginx

打开chrome检查下,可以看到是h2了。
在nginx上启用http2,开启ssl,开启HSTS_第1张图片
HSTS也开启了
在nginx上启用http2,开启ssl,开启HSTS_第2张图片

你可能感兴趣的:(运维)