设为首页 收藏本站
查看: 873|回复: 0

[经验分享] Nginx实现多域名证书HTTPS

[复制链接]

尚未签到

发表于 2017-12-22 17:40:19 | 显示全部楼层 |阅读模式
  目前公司有2个域名,其中这次涉及到3个子域名需要更改为HTTPS传输,分别为:
  passport.abc.com
  www.test.com
  admin.test.com
  那么就涉及到购买ssl证书的问题,由于价格问题使用3个不同的证书(每个域名一个)。
  由于实验环境,我们就手动生成3个ssl证书
  建立目录,及进入目录
[iyunv@gz122haproxy95 ~]# mkdir ~/keys

[iyunv@gz122haproxy95 keys]# cd ~/keys

[iyunv@gz122haproxy95 keys]# openssl genrsa -out passport.abc.com.key 2048

[iyunv@gz122haproxy95 keys]# openssl req -new -key passport.abc.com.key -out passport.abc.com.csr

  You are about to be asked to enter information that will be incorporated
  into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  There are quite a few fields but you can leave some blank
  For some fields there will be a default value,
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) [GB]:CN   #国家
  State or Province Name (full name) [Berkshire]:GuangDong  #省份
  Locality Name (eg, city) [Newbury]:ShenZhen   #城市
  Organization Name (eg, company) [My Company Ltd]:Test.Inc    #公司名称
  Organizational Unit Name (eg, section) []:passport.abc.com    #组织名称
  Common Name (eg, your name or your server's hostname) []:passport.abc.com   #域名
  Email Address []:passport@abc.com
  Please enter the following 'extra' attributes
  to be sent with your certificate request
  A challenge password []:
  An optional company name []:
[iyunv@gz122haproxy95keys]# openssl x509 -req -days 3650 -in passport.abc.com.csr -signkey passport.abc.com.key -out passport.abc.com.crt

  按照以上方法,把名称替换掉再制作2份,最后的结果就是
[iyunv@gz122haproxy95 keys]# ls -l

  total 36
  -rw-r--r-- 1 root root 1354 Dec  4 16:54 admin.test.com.crt
  -rw-r--r-- 1 root root 1050 Dec  4 16:54 admin.test.com.csr
  -rw-r--r-- 1 root root 1675 Dec  4 16:52 admin.test.com.key
  -rw-r--r-- 1 root root 1354 Dec  4 16:48 passport.abc.com.crt
  -rw-r--r-- 1 root root 1078 Dec  4 16:44 passport.abc.com.csr
  -rw-r--r-- 1 root root 1675 Dec  4 16:41 passport.abc.com.key
  -rw-r--r-- 1 root root 1354 Dec  4 16:52 www.test.com.crt
  -rw-r--r-- 1 root root 1062 Dec  4 16:52 www.test.com.csr
  -rw-r--r-- 1 root root 1679 Dec  4 16:51 www.test.com.key
  现在就是Nginx和OpenSSL的安装与配置(这里注意,一般情况下一个IP只支持一个SSL证书,那么我们现在要在一个IP上实现多个SSL证书,就必须让Nginx支持TLS SNI,由于默认的OpenSSL是没有打开TLS SNI的)
[iyunv@gz122haproxy95 ~]# wget

[iyunv@gz122haproxy95 ~]# tar zxf openssl-0.9.8zh.tar.gz  

[iyunv@gz122haproxy95 ~]# wget http://nginx.org/download/nginx-1.8.0.tar.gz

[iyunv@gz122haproxy95 ~]# tar zxf nginx-1.8.0.tar.gz

[iyunv@gz122haproxy95 ~]# cd nginx-1.8.0

[iyunv@gz122haproxy95nginx-1.8.0]# ./configure --prefix=/usr/local/nginx1.8.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=../openssl-0.9.8zh

[iyunv@gz122haproxy95 nginx-1.8.0]# make && make install

  #上面只需要解压openssl即可,然后在nginx的配置参数中添加--with-openssl=DIR指定路径即可,另外由于openssl需要编译,所以时间会较长。
  在编译安装nginx的时候可能会出现pcre库没找到或zlib没找到,在CentOS下可以使用
  yum -y install pcre-devel zlib-devel
  在安装编译好Nginx后,执行
[iyunv@gz122haproxy95 nginx-1.8.0]# /usr/local/nginx1.8.0/sbin/nginx -V

  nginx version: nginx/1.8.0
  built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55)
  built with OpenSSL 0.9.8zh 3 Dec 2015
  TLS SNI support enabled      #可以看到TLS SNI support打开了
  configurearguments: --prefix=/usr/local/nginx1.8.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=../openssl-0.9.8zh
  然后配置nginx
  upstream passport.abc.com {
  server 192.168.20.87:80;
  server 192.168.20.88:80;
  }
  # HTTPS server
  #
  server {
  listen       443 ssl;
  server_name  passport.abc.com;
  ssl_certificate      /root/keys/passport.abc.com.crt;
  ssl_certificate_key  /root/keys/passport.abc.com.key;
  ssl_session_cache    shared:SSL:1m;
  ssl_session_timeout  5m;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;
  location / {
  proxy_pass http://passport.abc.com;
  }
  }
  upstream www.test.com {
  server 192.168.20.98:80;
  server 192.168.20.99:80;
  }
  # HTTPS server
  #
  server {
  listen       443 ssl;
  server_name  www.test.com;
  ssl_certificate      /root/keys/www.test.com.crt;
  ssl_certificate_key  /root/keys/www.test.com.key;
  ssl_session_cache    shared:SSL:1m;
  ssl_session_timeout  5m;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;
  location / {
  proxy_pass http://www.test.com;
  }
  }
  通过以上即可实现nginx的HTTPS的多域名反向代理

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-426916-1-1.html 上篇帖子: Nginx Access Log日志统计分析常用命令 下篇帖子: nginx升级至1.12.1版本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表