一. 背景

首先说一下存案相关的一些事情,APP 为什么要存案?通常咱们了解的只要网站存案,现在又出来了 APP 存案,它们是一回事吗?

2023 年 7 月 21 日,工业和信息化部发布了一篇关于展开移动互联网运用程序存案作业的通知,要求存量 APP 存案(2023 年 9 月-2024 年 3 月),首要包含安卓、iOS、小程序、快运用等移动端运用。

iOS APP存案那些事:剖析怎么经过证书文件获取公钥和指纹

详情请检查:

工业和信息化部关于展开移动互联网运用程序存案作业的通知

一图读懂 APP 存案

最近咱们公司也要求了,要目前线上存在的 APP 尽快履行存案手续,保证在 2024 年 3 月之前存案成功,防止后期被运用商铺下架的危险。

咱们采取了阿里云存案,有专门的运维人员担任这一块,就在前几天,找我要一些存案的相关信息,首要有以下的相关信息进行供给:

  • iOS Bundle ID
  • 公钥
  • 证书指纹

如下图所示:

iOS APP存案那些事:剖析怎么经过证书文件获取公钥和指纹

二. 怎么获取

iOS Bundle ID,咱们都很熟悉,便是运用包名,创立运用的时分咱们就应该清楚。因而,从以上的信息得知,咱们的难点在于怎么样获取运用公钥和证书指纹。我总结了以下几种办法:

1. 经过 App Store Connect 获取

App Store Connect 苹果开发者中心能够获取运用 Bundle ID、公钥、证书指纹值。

  1. 经过标识符获取运用的 Bundle ID
  2. 经过证书获取公钥以及证书指纹

如下图所示

iOS APP存案那些事:剖析怎么经过证书文件获取公钥和指纹

2. 经过指令行东西获取

由于咱们的 iOS 运用是由集团统一管理,个人的账号是没有权限检查这些信息的,只要 App 管理的权限,因而不能经过苹果开发者网站直接检查,因而运用了经过指令行解析证书获取了公钥和指纹,运用的东西是 OpenSSL。那么咱们先简单了解一下 OpenSSL 是什么?

OpenSSL 是一个开源的加密库,用于实现安全套接层(SSL)和输层安全(TLS)协议。它供给各种加密、解密、认证和安全通信功能,被广泛用于维护网络通和加密数据。

OpenSSL 只需求简单的指令就能够解析证书获取到公钥和指纹。下面咱们来看一下是怎么进行操作的。

三. 装置 OpenSSL

苹果的 macOS 操作系统不再默许装置 OpenSSL,但你能够经过以下几种办法装置 OpenSSL:

1. 运用 Homebrew 装置

假如你现已装置了 Homebrew 包管理器,能够运用指令行终端履行以下指令装置 OpenSSL:

brew install openssl

装置完成后,你就能够在终端中运用 OpenSSL 相关指令了。

2. 运用 MacPorts 装置

假如你运用 MacPorts 包管理器,能够运用以下指令装置 OpenSSL:

sudo port install openssl

装置完成后,你就能够在终端中运用 OpenSSL 相关指令了。

3. 手动编译装置

假如你喜欢手动编译装置,能够从 OpenSSL 官方网站( www.openssl.org/ )下载源代码,然后按照官方供给的编译装置攻略进行装置。

在装置完成后,你能够运用 OpenSSL 指令行东西履行 SSL 相关操作,也能够在你的运用程序中运用 OpenSSL 进行加密和解密操作等。

4. 验证是否装置成功

openssl version

假如成功装置,将显示 OpenSSL 的版别信息。

四. 提取公钥和 MD5 指纹

1. 提取证书

运用以下指令从 “.p12” 文件中提取证书文件,并将其保存为独自的文件。

openssl pkcs12 -in Certificate.p12 -clcerts -nokeys -out MyCertificate.crt

这条指令的作用是操作 PKCS#12 格局的证书文件,并将其间的(certificates)提取出来,保存为 CRT 格局的证书文件中,私钥将不包含在输出文件中。让咱们对这个指令进行分化解析:

  • pkcs12: 指定了要履行 PKCS#12 操作。
  • -in Certificate.p12: 指定了输入的证书文件,文件名为 Certificate.p12。留意,这个文件应该是 PKCS#12 格局的证书文件。
  • -clcerts: 表明只保存其间的憑證(certificates),而不包含私钥(private keys)。
  • -nokeys: 表明不包含私钥(private keys)。
  • -out MyCertificate.crt: 指定了输出的文件名,即提取出来的憑證将保存为 MyCertificate.crt 文件,该文件是 CRT 格局的证书文件。

指令履行后,会等待咱们输入暗码后,将提取证书并将其保存为“MyCertificate.crt”文件,如下图所示:

iOS APP存案那些事:剖析怎么经过证书文件获取公钥和指纹

iOS APP存案那些事:剖析怎么经过证书文件获取公钥和指纹

2. 获取证书的 MD5 指纹

经过上一步输出的 CRT 格局的证书文件,运用以下指令获取证书的 MD5 指纹。

openssl x509 -noout -fingerprint -md5 -inform pem -in MyCertificate.crt

这条指令的首要作用是对该证书文件进行指纹(fingerprint)核算,并将成果以 MD5 哈希算法的格局进行输出。下面临这个指令进行分化解析:

  • x509: 指定了要 X.509 格局的书进行操作。
  • -noout: 表明输出证书自身的内容,只输出指定的信息。
  • -fingerprint: 指定核算证书的指纹(fingerprint)。
  • -md5: 指定运用 MD5 哈希算法来核算指纹。
  • -inform pem: 指定输入证书文件的格局为 PEM 格局。
  • -in MyCertificate.crt 指定了的证书文件,文件为 MyCertificate.crt。

运转上面指令后将输出证书的 MD5 指纹,能够从中获取 MD5 值,如下图所示:

iOS APP存案那些事:剖析怎么经过证书文件获取公钥和指纹

3. 获取公钥

运用以下指令从证书中提取公钥,提取私钥并将其保存为’PublicKey.pem’文件。

openssl x509 -pubkey -noout -inform pem -in MyCertificate.crt > PublicKey.pem

这条指令的作用是从指定证书文件中提取出公钥,并将提取的公钥内容保存到一个新的 PEM 格局的文件 PublicKey.pem 中。下面临这个指令进行分化解析:

  • x509: 指定了要对 X.509 格局的证书进行操作。
  • -pubkey: 表明提取证书中的公钥。
  • -noout: 表明不输出证书自身的内容,只输出提取的公钥。
  • -inform pem: 指定输入证书文件的格局为 PEM 格局。
  • -in MyCertificate.crt: 指定了要操作的证书文件,文件名为 MyCertificate.crt。
  • > PublicKey.pem: 将提取的公钥内容重定向(redirect)到一个新的文件 PublicKey.pem 中。

运转以上的指令就能够提取证书的公钥并将其保存“PublicKey.pem”文件,将 .pem 后缀修改为 .txt 即可检查公钥,如下图所示:

iOS APP存案那些事:剖析怎么经过证书文件获取公钥和指纹

4. 获取成功

现在,现已经过“.p12”证书文件成功获取了公钥和 MD5。请留意,上述指令中的文件名需求依据自己的实际情况进行调整。

五. 总结

经过这篇文章的总结,咱们了解了怎么经过证书文件获取到公钥和指纹,常用的首要有两种办法:

  • 经过 App Store Connect 网站获取,苹果的官方网站,简单快捷。
  • 经过 OpenSSL 东西获取,只要对指令行熟悉也能快速获取

咱们首要剖析了经过以上两种办法获取,其间要点对 OpenSSL 这个东西获取指令进行了相关解析,既解决了咱们的问题,同时也学习到了指令行中几个指令的含义,两全其美。

以上便是最近在进行 iOS APP 存案中,怎么经过证书文件获取公钥和指纹总结来的一些经历。