在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
本文转自https://blog.csdn.net/u012375924/article/details/76439505?locationNum=4&fps=1
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。