[TOC]
1 说明
此处介绍在CentOS6.8系统上,使用openSSL建立私有CA,并颁发证书,以配置 nginx 支持https。
2 创建私有CA(私有CA生成自签署的证书)
这部分的相关内容请看本人的另一篇文章
http://blog.csdn.net/hylexus/article/details/53058135
http://www.jianshu.com/p/7ad4846a2f38
或者此处用真正互联网通用的证书也是一样的。
3 为nginx配置SSL支持
# 此处在ssl目录下进行操作,位置按自己的需要吧
[root@h1 ssl]# pwd
/etc/nginx/ssl
3.1 生成私钥
[root@h1 ssl]# (umask 077;openssl genrsa -out nginx.key 1024)
3.2 生成证书颁发请求
# 按要求填写相关信息即可
[root@h1 ssl]# openssl req -new -key nginx.key -out nginx.csr
3.3 颁发证书
此处使用私有CA颁发,并且本人的CA和httpd在同一台主机上。
# 由于此处CA和httpd在同一台主机上,所有直接将颁发的证书放置到了/etc/nginx/ssl/nginx.crt目录
[root@h1 ssl]# openssl ca -in /etc/nginx/ssl/nginx.csr -out /etc/nginx/ssl/nginx.crt -days 365
3.4 nginx 配置
未启用https前的虚拟主机简单配置如下:
server{
listen 80;
server_name h3.hylexus.tech;
access_log /logs/aaa.access.log;
location /{
index index.html;
root /web/html/h3.hylexus.tech;
}
}
注意修改hosts文件,将域名加进去
[root@h1 conf.d]# cat /etc/hosts
# ………………
127.0.0.1 localhost.localdomain localhost h3.hylexus.tech
192.168.161.128 h1 h3.hylexus.tech
# ………………
先确保使用http协议能访问的虚拟主机之后再继续下文。
先用http协议访问 http://h3.hylexus.tech试试。成功后继续下文。
启用HTTPS
server{
# 同时支持http和https
listen 80;
listen 443 ssl;
server_name h3.hylexus.tech;
access_log /logs/aaa.access.log;
keepalive_timeout 70;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location /{
index index.html;
root /web/html/h3.hylexus.tech;
}
}
3.5 访问
记得修改hosts文件,因为这个域名纯粹是瞎编的……
当然浏览器会告警说证书来源不可信之类的,不告警才怪呢……除非你的证书是互联网通用的而不像我们这里自己给自己颁发的……