因为目前环境在本地进行测试,所以我们采用自建CA并签名server证书的方式实现https。(如果使用AWS服务则是AWS作为CA,并根据我们提供的资料生成server证书)

数字签名相关知识课参阅:https://blog.csdn.net/m0_37263637/article/details/80285143
<https://blog.csdn.net/m0_37263637/article/details/80285143>
server环境:nginx(ubuntu)
工具:openssl
名词说明:CA 证书授权中心(Certificate Authority )
参考链接:http://www.cnblogs.com/kyrios/p/tls-and-certificates.html
<http://www.cnblogs.com/kyrios/p/tls-and-certificates.html>

1 自建CA

1.1 生成CA私匙
openssl genrsa -out icatchtek.key 2048
1.2 生成CA证书请求
openssl req -new -key icatchtek.key -out icatchtek.csr
过程中需要你输入该根证书相关信息
PS:证书请求是对签名的请求,需要使用私钥进行签名

1.3 生成CA根证书
openssl x509 -req -in icatchtek.csr -extensions v3_ca -signkey icatchtek.key -
out icatchtek.crt
这里就得到的CA的根证书
PS:证书是自签名或CA签名过的凭据,用来进行身份认证

2 自建server端证书

2.1 生成server私匙
openssl genrsa -out smarthome_server.key 2048
2.2 生成server证书请求
openssl req -new -key smarthome_server.key -out smarthome_server.csr
2.3 生成server证书

生成server证书,需要一份配置文件,可参阅:vi openssl.cnf
[req] distinguished_name = req_distinguished_name req_extensions = v3_req
[req_distinguished_name] countryName = Country Name (2 letter code)
countryName_default = CN stateOrProvinceName = Stateor Province Name (full
name) stateOrProvinceName_default = SiChuan localityName = ChengDu (eg, city)
localityName_default = xx.xx organizationalUnitName = xxxxxx
organizationalUnitName_default = Domain Control Validated commonName = Internet
Widgits Ltd commonName_max =64 [ v3_req ] # Extensions to add to a certificate
request basicConstraints = CA:FALSE keyUsage = nonRepudiation,
digitalSignature, keyEncipherment subjectAltName =@alt_names [alt_names]
#注意这个IP.1的设置,IP地址需要和你的服务器的监听地址一样 DNS为server网址 IP.1 = 172.28.28.4 DNS.1 =
www.helloworld.com
需要将server监听的地址写入证书中,如果方式时地址与证书中地址不一致将不能通过证书认证。
执行命令生成server证书
openssl x509 -days 365 -req -in smarthome_server.csr -extensions v3_req -CAkey
icatchtek.key -CA icatchtek.crt -CAcreateserial -out smarthome_server.crt
-extfile openssl.cnf
-days 为证书有效期

3 在server部署server证书

Nginx 部署可参考:https://blog.csdn.net/m0_37263637/article/details/80077925
<https://blog.csdn.net/m0_37263637/article/details/80077925>
在2中我们得到了经过CA认证后的并生成的server证书,现在我们将证书部署到nginx目录下进行测试.
在nginx.conf中 server 块内 listen 端口后添加下面的语句
ssl on; ssl_certificate
/home/ubuntu/webvideo/nginx/conf/smarthome_server.crt; ssl_certificate_key
/home/ubuntu/webvideo/nginx/conf/smarthome_server.key;
我们直接访问nginx 开放的端口,会得到浏览器的警告:

PS:2中openssl.cnf中的地址一定要与nginx架设地址一致。

4 将自建CA根证书加入到浏览器

因为我们不是官方的CA机构并没有内置在浏览器或系统中,所以浏览器会认为该CA非法,此时我们需要将我们自建CA的根证书加入到浏览器中。(1操作流程中得到的证书)

* Chrome :设置-设置-设置-高级-隐私设置和安全性-管理证书-导入
* 火狐:设置-选项-高级-证书-查看证书-证书机构-导入
以上设置均可百度相关浏览器导入证书。
IE 和 safari 使用的windows 默认证书导入方式但不能被识别
现在访问就没有这个警告了。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信