准备cfssl环境
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfsslwget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljsonwget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfochmod +x /usr/local/bin/cfssl*
生成ca证书
cd;mkdir keys;cd keyscat > ca-config.json <ca-csr.json <
生成server证书
cd /root/keyscat > app-csr.json <
构建https webserver模拟测试
cd /root/cat > http-server.js <
访问服务端https://192.168.1.x:8000端口(域已添加本地hosts)
发现
opera浏览器处理浏览器安全问题
1.导出ca.pem到win7,改名为ca.crt.
2.运行 certmgr.msc 打开证书管理器
3.浏览器访问8000端口(ctrl+shift+del清缓存)
opera浏览器
4.使用apps.ma.com访问,也报错
无SAN(Subject Alternative Name)-CN: app.ma.com-即使地址栏的域名和CN一样也报错
cd /root/keysrm -rf app*cat > app-csr.json <
无SAN(Subject Alternative Name)-CN: *.ma.com-即使地址栏的域名和CN一样也报错
cd /root/keysrm -rf app*cat > app-csr.json <
SAN含app.ma.com(Subject Alternative Name)-CN: *.ma.com-仅app.ma.com域名可访问
cd /root/keysrm -rf app*cat > app-csr.json <
SAN含.ma.com(Subject Alternative Name)-CN: .ma.com-可用任意*.ma.com来访问
cd /root/keysrm -rf app*cat > app-csr.json <
查看互联网上一些证书
汽车之家的通用型(*)证书(而且一个证书对应了多个域名)
谷歌的 www证书
wildcard和san两种证书的区别
wildcard: 可变部分sub-domain:*.maotai.comwww.maotai.combbs.maotai.comsan: 可变部分: subdomain和domainsubdomain*.ma.com*.ma.net*.xx.net
注:一般通用型证书比www证书价格贵一半左右.
参考:
当浏览器使用HTTPS连接到您的服务器时,他们会检查以确保您的SSL证书与地址栏中的主机名称匹配。==浏览器有三种找到匹配的方法:==
- 1.主机名(在地址栏中)与证书主题(Subject)中的通用名称(Common Name)完全匹配。
- 2.主机名称与通配符通用名称相匹配。例如,www.example.com匹配通用名称* .example.com。
3.主机名 在主题备用名称(SAN: Subject Alternative Name)字段中列出
- 1.The host name (in the address bar) exactly matches the Common Name in the certificate's Subject.
- 2.The host name matches a Wildcard Common Name. For example, www.example.com matches the common name *.example.com.
3.The host name is listed in the Subject Alternative Name field.
客户端使用服务端返回的信息验证服务器的合法性,包括: 证书是否过期 发型服务器证书的CA是否可靠 返回的公钥是否能正确解开返回证书中的数字签名 服务器证书上的域名是否和服务器的实际域名相匹配 -- 要核对CN或SAN,见上 验证通过后,将继续进行通信,否则,终止通信
在哪里可以查看到san
参考:
小结: 正因为访问的域名在san列表,所以访问才能被通过校验.