IP地址加密HTTPS
为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
,如下所示:
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C = US
ST = California
L = San Francisco
O = My Company
OU = IT Department
CN = your.domain.com #改为服务器IP地址
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ] #没有域名注释,IP改为服务器IP地址
#DNS.1 = your.domain.com
#DNS.2 = www.your.domain.com
IP.1 = 192.168.1.1
然后生成 CSR:
openssl req -new -key myserver.key -out myserver.csr -config server_cert.cnf
- 生成证书
使用自签名的 CA 证书来签署这个 CSR,并生成服务器证书:
首先,创建一个 CA 配置文件 ca_cert.cnf
,如下所示:
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[ alt_names ] #IP地址改为服务器地址
#DNS.1 = your.domain.com
#DNS.2 = www.your.domain.com
IP.1 = 192.168.1.1
然后,使用以下命令生成服务器证书,证书的有效期设置为 365 天:
openssl x509 -req -in myserver.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out myserver.crt -days 365 -sha256 -extfile ca_cert.cnf -extensions v3_ca
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与设备管理-安装证书
-
关于本机-证书信任设置-打开完全信任开关