当 'GB' 证书签名请求提交到 Apple 会员中心时,'Country' 字段重置为 'US'

'Country' field reset to 'US' when 'GB' Certificate Signing Request is submitted to Apple Member Center

我们是一家英国公司,正在使用会员中心更新 iOS 分发证书。我们正在使用 'Keychain Access' 生成证书签名请求,并将该 CSR 提交给会员中心。我们打算使用生成的证书来配置使用 'Enterprise' 分发的应用程序。

Keychain Access 生成的 CSR 在 CSR 的 'Subject' 字段中包含 'GB' 国家代码。但是,我们从会员中心收到的证书似乎将 'Country' 字段设置为 'US'。使用 'Development' 和 'Production' 证书观察到相同的行为。用于生成 CSR 的机器已在系统偏好设置中正确配置为使用 'English' 语言和 'United Kingdom' 区域。我们已经使用两个不同的 Apple Developer 帐户在多台机器上复制了这个问题。

由于我们的旧证书(我们正在尝试续订的证书)的 'Country' 代码设置为 'GB',我们担心国家代码的更改可能会影响我们提供的能力应用正确使用证书,所以有以下问题:

  1. 有没有美国以外的开发者在创建证书时观察到类似的行为?
  2. 这种行为在过去 2-3 年中是否发生了变化(即自从我们创建原始 'GB' 证书以来)?
  3. 美国以外的任何开发人员是否在使用企业部署使用具有美国国家/地区代码的证书配置应用程序时遇到任何问题?

复制观察到的问题的步骤:

(在 OS X Yosemite 10.10.4 和 Apple Member Center 上使用 Keychain Access 版本 9.0 (55161),截至 2015-07-28)

使用钥匙串访问生成证书签名请求:

  1. 启动钥匙串访问
  2. Select login 钥匙串,并确保没有现有的钥匙被 selected.
  3. 选择Keychain Access -> Certificate Assistant -> Request a Certificate from a Certificate Authority...菜单选项。
  4. 指定用户电子邮件地址通用名称,并且select 请求已保存 ->到磁盘.
  5. 单击继续,并将证书签名请求保存到合适的位置。

确认 CSR 中的 'Subject' 字段的国家代码为 'GB'

$ openssl req -in CertificateSigningRequest.certSigningRequest -text -noout  
Certificate Request:  
    Data:  
        Version: 0 (0x0)  
        Subject: emailAddress=acme.developer@acme.com, CN=Acme, C=GB  
        Subject Public Key Info:  
            Public Key Algorithm: rsaEncryption  
                Public-Key: (2048 bit)  
                ...

使用 CSR 创建新证书

  1. 转到 Apple Developer Portal 的 'Member Center'。
  2. Select 证书、标识符和配置文件
  3. iOS 应用程序 下,单击 证书
  4. 单击 + 图标添加新证书。
  5. 开发 部分下 select iOS 应用程序开发.
  6. 上传之前创建的 CSR。
  7. 下载新创建的证书。

查看新证书详情

$ certtool d ios_development.cer  
Serial Number    : xxxxx  
Issuer Name      :  
  Country        : US  
  Org            : Apple Inc.  
  OrgUnit        : Apple Worldwide Developer Relations  
  Common Name    : Apple Worldwide Developer Relations Certification Authority  
Subject Name    :  
  Other name    : XXXXXXXXX  
  Common Name    : iPhone Developer: XXXXXXXXX (XXXXXXXXXX)  
  OrgUnit        : XXXXXXXXXX  
  Org            : XXXXXXXXXX  
  Country        : US

请注意 'Subject Name' 下的 'Country' 字段现在包含 'US'。

我们的旧 iOS 分发证书现已过期,所有生产应用程序现在都在使用新证书生成的配置文件。我们没有遇到任何问题,所以我认为我们可以放心地得出结论,美国国家代码不是问题。