弄个自签名 HTTPS SSL 网站凭证并安装到 iOS

4 min


因为最近要测试一个本地开发的网站,该网站强制必须使用 SSL 连线,然后我又要用 iOS 测试,于是搞半天终于搞定可以让 iOS 信任的 HTTPS SSL 自签名凭证。

先建立 ssl.conf 文件,内容如下,DNS 里面可以新增或修改为自己的域名

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = api.localhost.dev
DNS.2 = admin.localhost.dev
DNS.3 = app.localhost.dev
IP.1 = 127.0.0.1

再执行下面指令。请不要自作聪明改掉 390 这个数字。因为 2020 年 9 月之后系统不会信任到期日 13 个月以上的凭证,所以如果你抄太久以前的网站教学,一次签十年那种,就会搞半天然后一直翻车不成功。

openssl req –x509 –nodes –new –sha256 –days 390 –newkey rsa:2048 –keyout 「RootCA.key」 –out 「RootCA.pem」 –subj 「/C=TW/CN=localhost.dev」
openssl x509 –outform pem –in 「RootCA.pem」 –out 「RootCA.crt」
openssl req –new –nodes –newkey rsa:2048 –keyout server.key –out server.csr –subj 「/C=TW/ST=Tawian/L=City/O=Organization/CN=localhost.local」
openssl x509 –req –sha256 –days 390 –in server.csr –CA RootCA.pem –CAkey RootCA.key –CAcreateserial –extfile ssl.conf –out server.crt

之后会生成两个 crt,分别是 root.crt 跟 server.crt,把这两个文件分别 AirDrop 进去 iPhone 里面,然后安装凭证。最后再去设置的 一般 → 关于本机 → 凭证信任设置 里面把开关打开就可以了。如果你的开发机不是 Mac,不能 AirDrop 的话,可以用 Email 发给自己,一样可以安装凭证。

至于怎么让 DNS 解析到这个设置的域名呢… macOS 端我是直接改 /etc/hosts,iOS 端我是用 Surge,但任何可以让你设置 DNS 解析的工具应该都可以〔例如 AdGuard for iOS


Like it? Share with your friends!

0
DUN

Choose A Format
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Video
Youtube and Vimeo Embeds