码迷,mamicode.com
首页 > 其他好文 > 详细

CentOS 7.4 Tengine安装配置详解(五)

时间:2018-05-29 22:52:51      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:tengine   nginx   https   

十四、配置Tengine支持HTTPS

1、演示环境:

IP

操作系统

角色

 192.168.1.222

      CentOS   7.4

     Tengine服务器

 192.168.1.145

      CentOS   6.9

  自建CA服务器

备注:TengineCA可以部署于同一台服务器


2、修改配置文件nginx.conf,创建基于主机名的虚拟主机:

server {

listen 80;

server_name web.vhosts.com;

       location / {

root /vhosts/web;

index index.html index.html;

       }

}


3、创建虚拟主机页面存放目录及测试页:

# mkdir -pv /vhosts/web

# echo "Index html" > /vhosts/web/index.html

# echo "Test html" > /vhosts/web/test.html

# nginx -t

# nginx -s reload


4、以管理员权限运行notepad,修改本地Windows 10C:\Windows\System32\drivers\etc\hosts文件,末尾新增代码:192.168.1.222 web.vhosts.com,保存后访问测试页

技术分享图片

技术分享图片


5、 192.168.1.145的自建CA服务器创建私有CA

(1)安装相关软件包:# yum -y install openssl openssh-clients  # which openssl --> /usr/bin/openssl

备注:OpenSSL的配置文件是/etc/pki/tls/openssl.cnf,此处无需修改,使用默认配置即可

(2)创建保存证书信息的数据库文件:# touch /etc/pki/CA/index.txt

(3)创建保存证书序列号的文件:# echo 01 > /etc/pki/CA/serial

(4)生成私钥cakey.pem# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

技术分享图片

备注:genrsa子命令常用选项

?  genrsa:用于生成RSA密钥对的OpenSSL子命令

?  -out cakey.pem:私钥保存位置

?  2048:密钥长度,也可以使用10244096

更多genrsa子命令选项可查看:# man genrsa

(5)生成CA证书cacert.pem

# cd /etc/pki/CA  # openssl req -new -x509 -key private/cakey.pem -days 7300 -out cacert.pem

技术分享图片

其中ca.vhosts.com为证书颁发者

备注:req子命令常用选项

?  req:用于证书签署请求和证书生成的OpenSSL子命令

?  -new:生成新证书签署请求

?  -x509:专用于CA生成自签证书

?  -key cakey.pem:生成CA证书请求时用到的私钥

?  -days 7300:证书的有效期限为20

?  -out cacert.pem:证书的保存路径

更多req子命令选项可查看:# man req


6、 192.168.1.222Tengine服务器生成证书签署请求文件并发送至自建CA服务器:

(1)安装相关软件包:# yum -y install openssh-clients  # which openssl --> /usr/bin/openssl

(2)创建用于存放密钥的目录:# mkdir -pv /usr/local/tengine/ssl  # cd /usr/local/tengine/ssl

(3)生成私钥web-vhosts-com.key# (umask 077; openssl genrsa -out web-vhosts-com.key 2048)

技术分享图片

(4)生成证书签署请求文件web-vhosts-com.csr

# openssl req -new -key web-vhosts-com.key -days 7300 -out web-vhosts-com.csr

技术分享图片

其中web.vhosts.com为证书颁发的对象

(5)将证书签署请求文件web-vhosts-com.csr发送至192.168.1.145的自建CA服务器:

# scp web-vhosts-com.csr root@192.168.1.145:/etc/pki/CA/certs/


7、自建CA服务器签署证书并发还给Tengine服务器:

(1)签署证书:

# cd /etc/pki/CA/certs  # openssl ca -in web-vhosts-com.csr -days 7300 -out web-vhosts-com.crt

技术分享图片

备注:ca子命令常用选项

?  ca:用于签署证书请求的OpenSSL子命令

?  -in web-vhosts-com.csr:证书签署请求文件路径

?  -days 7300:证书的有效期限为20

?  -out web-vhosts-com.crt:证书的保存路径

更多ca子命令选项可查看:# man ca

(2)将证书web-vhosts-com.crt发还给Tengine服务器:

# scp web-vhosts-com.crt root@192.168.1.222:/usr/local/tengine/ssl

(3)Tengine服务器查看证书信息:

技术分享图片

# openssl x509 -in web-vhosts-com.crt -noout -text       //显示详细信息

# openssl x509 -in web-vhosts-com.crt -noout -subject

# openssl x509 -in web-vhosts-com.crt -noout -serial

技术分享图片


8、配置Tengine支持HTTPS

(1)修改配置文件nginx.conf

server {

# HTTP默认监听端口为80,而HTTPS默认监听端口为443

listen 443 ssl;

server_name web.vhosts.com;

 

# 指定证书文件路径

ssl_certificate /usr/local/tengine/ssl/web-vhosts-com.crt;

 

# 指定证书文件对应的私钥文件路径

ssl_certificate_key /usr/local/tengine/ssl/web-vhosts-com.key;

 

# 指定SSL/TLS会话缓存的类型和大小,shared:SSL:10m表示所有Tengine工作进程共享SSL会话缓存

ssl_session_cache shared:SSL:10m;

 

# SSL会话超时时长,默认为5分钟

ssl_session_timeout 30m;

 

# 指定加密协议

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

 

# 指定使用的套件加密算法,不同的浏览器所支持的套件可能会有所不同

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;

 

# 设置协商加密算法时,优先使用服务器端的加密套件,而不是客户端浏览器的加密套件

ssl_prefer_server_ciphers on;

 

       location / {

root /vhosts/web;

index index.html index.html;

       }

}

# nginx -t  # nginx -s reload  # ss -tunlp | grep :443

(2)浏览器中输入https://web.vhosts.com测试:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

(3)将所有HTTP请求(80端口)重定向到HTTPS443端口),并访问测试页:

server {

listen 80;

server_name web.vhosts.com;

 

# 以下方法三选一

rewrite ^/(.*)$ https://$server_name/$1 permanent;

#rewrite ^ https://$server_name$request_uri? permanent;

#return 301 https://$server_name$request_uri;

 

       location / {

root /vhosts/web;

index index.html index.html;

       }

}

# nginx -t  # nginx -s reload

浏览器访问http://web.vhosts.com,回车后自动跳转至https://web.vhosts.com

技术分享图片

浏览器访问http://web.vhosts.com/test.html,回车后自动跳转至https://web.vhosts.com/test.html

技术分享图片

查看web-vhosts-com.crt证书信息:

技术分享图片

备注:生产环境中使用的证书建议从正规的证书颁发机构处申请

 


CentOS 7.4 Tengine安装配置详解(五)

标签:tengine   nginx   https   

原文地址:http://blog.51cto.com/qiuyue/2121791

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!