为IP地址签署服务器证书,使得通过IP访问网站使用https加密,并且使iOS信任证书,不弹不安全警告
流程简单就是 先创建一个CA证书,自己充当证书颁发机构给服务器签一个证书,为了在iOS上面得以信任该证书,有很多细节需要注意
1、生成自签名CA证书
- 生成CA私钥
openssl genrsa -out myCA.key 2048
- 创建CA根证书
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 3650 -out myCA.pem
2、生成服务器证书
- 生成服务器私钥
openssl genrsa -out myserver.key 2048
- 创建CSR(证书签名请求)
使用私钥生成 CSR,并指定所需的 SAN 和其他参数:
创建一个 OpenSSL 配置文件 server_cert.cnf
,如下所示:
|
|
然后生成 CSR:
openssl req -new -key myserver.key -out myserver.csr -config server_cert.cnf
- 生成证书
使用自签名的 CA 证书来签署这个 CSR,并生成服务器证书:
首先,创建一个 CA 配置文件 ca_cert.cnf
,如下所示:
|
|
然后,使用以下命令生成服务器证书,证书的有效期设置为 365 天:
|
|
3、验证生成的证书
你可以使用以下命令来查看生成的服务器证书,并验证 SAN、EKU、有效期等是否正确:
openssl x509 -in myserver.crt -text -noout
4、将证书放到服务器上
将 myserver.key
和 myserver.crt
文件部署到你的服务器上,并配置服务器(如 Caddy、Nginx、Apache)使用这些证书。
5、Ios\Mac设置信任
- 对于Mac:
打开自签名CA证书myCA.pem
,在钥匙串内选择信任
-
对于IOS
-
将自签名CA证书
myCA.pem
隔空投送到iPhone上 -
设置- VPN与设备管理-安装证书
-
关于本机-证书信任设置-打开完全信任开关
-
参考
How do you sign a Certificate Signing Request with your Certification Authority?