Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1081778
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 746
  • 用 户 组: 普通用户
  • 注册时间: 2018-06-12 20:01
个人简介

寫写code、调調bug、填填坑,僅此而已。

文章分类

全部博文(80)

文章存档

2019年(30)

2018年(50)

分类: 网络与安全

2018-06-20 16:36:12

1.为什么普通生成的证书在chrome下不能使用

在传输层安全性 (TLS) 连接期间,Chrome 浏览器会进行检查以确保网站连接使用的是有效、受信任的服务器证书。

Chrome 58 及以上版本只会使用 subjectAlternativeName 扩展程序(而不是 commonName)来匹配域名和网站证书。主题备用名称可以是域名,也可以是 IP 地址。如果证书没有正确的 subjectAlternativeName 扩展程序,系统就会向用户发送 NET::ERR_CERT_COMMON_NAME_INVALID 错误消息,告知他们连接并非处于私密状态。如果证书缺少 subjectAlternativeName 扩展程序,系统就会在 Chrome DevTools 的“安全”面板中显示警告,告知用户主题备用名称缺失。

2.chrome受信的ssl证书生成

修改openssl的配置文件
sudo vi /etc/ssl/openssl.cnf
在配置文件中找到配置req_extensions = v3_req并将此配置打开,在[ v3_req ]中加入subjectAltName

[ v3_req ]


# Extensions to add to a certificate request


basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names


#将需要匹配的域名写到下面
[ alt_names ]
DNS.1 = raydesktop.test.com
DNS.2 = *.test.com

修改完配置文件后再使用openssl生成证书


生成证书前先执行以下命令:
sudo mkdir -p demoCA/{certs,crl,newcerts,private}
sudo touch CA/index.txt
sudo echo 00 > CA/serial
ca证书:
sudo openssl req -new -x509 -days 3650 -keyout root.key -out root.crt -config /etc/ssl/openssl.cnf
执行完上面命令会得到两个文件:root.key和root.crt
服务端证书:
sudo openssl genrsa -out server.key 2048
生成证书签名请求
sudo openssl req -new -key server.key -out server.csr -config /etc/ssl/openssl.cnf
注意:Common Name填写域名时域名也要在openssl.cnf的DNS.x里,可以使用下面命令查看csr文件信息
openssl req -text -noout -in server.csr  
使用自签署的CA,签署server.scr
sudo openssl ca -in server.csr -out server.crt -cert root.crt -keyfile root.key -extensions v3_req -config /etc/ssl/openssl.cnf

输入第一步设置的密码,一直按y就可以了,最后会得到一个server.crt
客户端证书 :
生成client.key
sudo openssl genrsa -out client.key 2048
生成证书签名请求
sudo openssl req -new -key client.key -out client.csr -config /etc/ssl/openssl.cnf
使用自签署的CA,签署client.scr
sudo openssl ca -in client.csr -out client.crt -cert root.crt -keyfile root.key -extensions v3_req -config /etc/ssl/openssl.cnf
执行完后会得到client.crt

3.如何让自签发的证书在chrome上受信

在chrome中打开设置-->证书管理,在授权中心(linux)或者受信任的根证书颁发机构(windows)中导入上述生成的根证书,选择“信任该证书,以标识网站的身份”,重新打开浏览器即可

考资料:

普通证书失效的原因

什么是带SAN扩展的证书

使用openssl为ssl证书增加“使用者备用名称(DNS)”



阅读(4371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~