自签SSL证书实现Nginx配置https双向认证
2017-01-05 09:32
901 查看
1. 前期的准备工作:
安装openssl和nginx的https模块
cd ~/
mkdir ssl
cd ssl
mkdir demoCA
cd demoCA
mkdir newcerts
mkdir private
touch index.txt
echo '01' > serial
2. 制作CA证书(这个是信任的起点,根证书,所有其他的证书都要经过CA的私钥签名)。
生成 CA私钥:
ca.key
openssl genrsa -des3 -out ca.key 2048
这样是生成rsa私钥,`des3`算法,openssl格式,2048位强度。`ca.key`是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。
另外可以通过以下方法生成没有密码的key:
openssl rsa -in ca.key -out ca_decrypted.key
生成 CA根证书的公钥 ca.crt:
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
3. 制作网站的https证书,并用CA签名认证。
假设我们需要为
light.cn 域名制作证书,先生成
light.cn的证书私钥 light.cn.pem。
openssl genrsa -des3 -out light.cn.pem 1024
生成无密码的私钥:
openssl rsa -in light.cn.pem -out light.cn.key
生成 csr 签名申请:
openssl req -new -key light.cn.pem -out light.cn.csr
这里需要输入国家,地区,组织,email等。最重要的是**common name**,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名一样,即,这里要写light.com,否则会引发浏览器警报,这里可以用 *.light.cn 来做泛域名证书。
最后要用CA证书进行签名:
openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in light.cn.csr -out light.cn.crt
把 ca.crt 的内容追加到 light.cn.crt后面,因为有些浏览似乎不支持:
cat ca.crt>> light.cn.crt
注:windows 使用type 命令
4. 制作客户端证书(跟制作网站的证书模式一样):
准备客户端私钥:
生成客户端证书请求:
openssl req -new -key client.pem -out client-req.csr
CA签名客户端证书请求
openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in client-req.csr -out client.crt
客户端证书CRT转换为 PKCS #12格式(全称应该叫做 Personal
Information Exchange,通常以 p12作为后缀):
openssl pkcs12 -export -clcerts -in client.crt -inkey client.pem -out client.p12
点击刚才生成的p12文件输入证书的密码将安装。
5. nginx配置
server {
listen 443;
server_name test.com www.test.com;
root html;
index index.html index.htm;
ssl on; #开启ssl
ssl_certificate /usr/ssl/light.cn.crt; #服务器证书位置
ssl_certificate_key /usr/ssl/light.cn.key; #服务器私钥
ssl_client_certificate /usr/ssl/ca.crt; #CA证书用于验证客户端证书的合法性
ssl_verify_client on; #开启对客户端的验证
ssl_session_timeout 5m; #session有效期,5分钟
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL'; #加密算法
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
6. 测试
当将一切都设置好,将 nginx启动成功后,就可以打开 IE来访问了,第一次访问,浏览器会询问双向认证时使用的证书,类似下图
点击确认
安装openssl和nginx的https模块
cd ~/
mkdir ssl
cd ssl
mkdir demoCA
cd demoCA
mkdir newcerts
mkdir private
touch index.txt
echo '01' > serial
2. 制作CA证书(这个是信任的起点,根证书,所有其他的证书都要经过CA的私钥签名)。
生成 CA私钥:
ca.key
openssl genrsa -des3 -out ca.key 2048
这样是生成rsa私钥,`des3`算法,openssl格式,2048位强度。`ca.key`是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。
另外可以通过以下方法生成没有密码的key:
openssl rsa -in ca.key -out ca_decrypted.key
生成 CA根证书的公钥 ca.crt:
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
3. 制作网站的https证书,并用CA签名认证。
假设我们需要为
light.cn 域名制作证书,先生成
light.cn的证书私钥 light.cn.pem。
openssl genrsa -des3 -out light.cn.pem 1024
生成无密码的私钥:
openssl rsa -in light.cn.pem -out light.cn.key
生成 csr 签名申请:
openssl req -new -key light.cn.pem -out light.cn.csr
这里需要输入国家,地区,组织,email等。最重要的是**common name**,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名一样,即,这里要写light.com,否则会引发浏览器警报,这里可以用 *.light.cn 来做泛域名证书。
最后要用CA证书进行签名:
openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in light.cn.csr -out light.cn.crt
把 ca.crt 的内容追加到 light.cn.crt后面,因为有些浏览似乎不支持:
cat ca.crt>> light.cn.crt
注:windows 使用type 命令
4. 制作客户端证书(跟制作网站的证书模式一样):
准备客户端私钥:
openssl genrsa -des3 -out client.pem 2048
生成客户端证书请求:
openssl req -new -key client.pem -out client-req.csr
CA签名客户端证书请求
openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in client-req.csr -out client.crt
客户端证书CRT转换为 PKCS #12格式(全称应该叫做 Personal
Information Exchange,通常以 p12作为后缀):
openssl pkcs12 -export -clcerts -in client.crt -inkey client.pem -out client.p12
点击刚才生成的p12文件输入证书的密码将安装。
5. nginx配置
server {
listen 443;
server_name test.com www.test.com;
root html;
index index.html index.htm;
ssl on; #开启ssl
ssl_certificate /usr/ssl/light.cn.crt; #服务器证书位置
ssl_certificate_key /usr/ssl/light.cn.key; #服务器私钥
ssl_client_certificate /usr/ssl/ca.crt; #CA证书用于验证客户端证书的合法性
ssl_verify_client on; #开启对客户端的验证
ssl_session_timeout 5m; #session有效期,5分钟
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL'; #加密算法
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
6. 测试
当将一切都设置好,将 nginx启动成功后,就可以打开 IE来访问了,第一次访问,浏览器会询问双向认证时使用的证书,类似下图
点击确认
相关文章推荐
- 图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- nginx配置ssl加密(单双向认证、部分https)
- nginx配置ssl双向验证 nginx https ssl证书配置
- 从http到https简介,tomcat和nginx的https配置,单向认证和双向认证简介,对称加密和非对称加密简介,RSA算法简介
- 图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- nginx配置ssl加密(单/双向认证、部分https)
- nginx环境下配置ssl加密(单双向认证、部分https)
- nginx配置ssl加密(单双向认证、部分https)
- Nginx配置https双向认证
- Nginx配置SSL证书实现访问HTTPS网站
- nginx与ios实现https双向认证
- nginx配置ssl加密(单双向认证、部分https)
- nginx配置SSL实现服务器/客户端双向认证
- nginx配置SSL实现服务器/客户端双向认证
- CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- Tomcat 配置WebService的HTTPS实现SSL的单双向认证
- CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证
- nginx配置SSL实现服务器/客户端双向认证
- 图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证