按照网上教程折腾一翻,发现签发的证书无法在IOS设备上信任,本篇总结了折腾的经过。

ILO配置

1.创建工作目录

1
2
# 创建本次工作目录,防止与其他文件冲突
cd ~ && mkdir ssl && cd ssl

2.生成根证书配置文件

可以修改 [req_distinguished_name]下的信息,DNS中修改为你的域名,ip每行仅限一个,不支持通配符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cat > config.cnf <<EOF
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = SAN
extensions = SAN
[ req_distinguished_name ]
countryName = CN
stateOrProvinceName = Beijing
localityName = Beijing
0.organizationName = LiYao's House.
organizationalUnitName = LiYao Private service
[ alternate_names ]
DNS.1 = liyao.house
DNS.2 = *.liyao.house
IP.1 = 192.168.1.1
[SAN]
subjectAltName = @alternate_names
extendedKeyUsage = serverAuth
basicConstraints=CA:TRUE,pathlen:0

3.生成根证书

subj会是设备上显示的实际名字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# openssl生成根证书,2048已经不安全,改为4096
openssl req \
-newkey rsa:4096 \
-x509 \
-nodes \
-keyout rootCA.key \
-new \
-out rootCA.pem \
-subj "/emailAddress=liyao@lucat.fun/CN=LiYao's House/C=CN/ST=Beijing/L=Beijing/O=LiYao Inc./OU=LiYao Private Service." \
-config ./config.cnf \
-reqexts SAN \
-extensions SAN \
-sha256 \
-days 36500

4.获取csr文件

  • 情况一,csr由服务方提供,如:ilo服务需要在他的平台生成csr,登录平台操作

如图所示,生成需要稍微等待一会,按照提示获取后,保存到ssl/ilo.csr 中,注意旁边有一个导入证书,一会会回来操作。

  • 情况二,是给nginx或第三方服务生成,这种直接进行自签操作
1
2
3
4
5
6
7
8
9
openssl genrsa -out client.key 4096

openssl req -new -sha256 \
-key client.key -subj "/emailAddress=liyao@lucat.fun/CN=LiYao's House./C=CN/ST=Beijing/L=Beijing/O=LiYao Inc./OU=LiYao Private Service." \
-config ./config.cnf \
-reqexts SAN \
-extensions SAN \
-sha256 \
-out client.csr

5.生成crt文件

首先生成证书配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
cat > client.cnf <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName=@alt_names

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = SAN
extensions = SAN

[ req_distinguished_name ]
countryName = CN
stateOrProvinceName = Beijing
localityName = Beijing
organizationName = LiYao's House

[SAN]
subjectAltName = @alt_names
extendedKeyUsage = serverAuth
basicConstraints=CA:TRUE,pathlen:0

[alt_names]
DNS.1 = *.liyao.house
DNS.2 = liyao.house
IP.1 = 192.168.1.1
EOF

这里,证书签发的时间不能超过825天,否则chrome或safari会提示证书不信任:NET::ERR_CERT_VALIDITY_TOO_LONG,意思证书时间过长。

1
2
3
4
5
6
7
8
9
openssl x509 -req \
-in client.csr -CA rootCA.pem -CAkey rootCA.key \
-out client.crt \
-CAcreateserial \
-days 824 \
-sha256 \
-extensions SAN \
-extfile client.cnf

ilo.crt中的内容,粘贴至刚才ilo管理界面导入证书的入口。等待重启。

MacOS配置

执行open . 打开ssl目录,双击rootCA.pem安装根证书,双击修改证书信任策略为始终信任

退出浏览器重新打开,锁则变为绿色

Iphone设置

使用隔空投送,将rootCA.pem推送至手机,用QQ,微信好像不行,不支持打开。

  1. 打开系统设置,点击添加提示,信任描述文件。
  2. 通用,关于本机下滑到底,证书信任设置中开启对证书的信任。