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



我们是一家英国公司,正在使用Member Center更新iOS Distribution证书。我们使用"Keychain Access"生成证书签名请求,并将该CSR提交给会员中心。我们打算使用生成的证书来提供使用"企业"发行版的应用程序。

Keychain Access生成的CSR在CSR的"Subject"字段中包含"GB"国家代码。但是,我们从Member Center收到的证书似乎将"国家"字段设置为"美国"。同样的行为也出现在"开发"one_answers"生产"证书中。用于生成CSR的机器在System Preferences中正确配置为使用"English"语言和"United Kingdom"区域。我们使用两个不同的Apple Developer帐户在多台机器上重复了这个问题。

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

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

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

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

使用Keychain Access生成证书签名请求:

  1. Launch Keychain Access.
  2. 选择登录密钥链,并确保没有选择现有密钥。
  3. 选择Keychain Access -> Certificate Assistant ->向证书颁发机构请求证书…菜单选项。
  4. 指定用户Email地址通用名,并选择Request is -> Saved to disk
  5. 单击Continue,将证书签名请求保存到合适的位置。

确认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

创建新的证书
    进入Apple Developer Portal的"Member Center"。
  1. 选择证书、标识符和;概要文件
  2. iOS Apps,点击Certificates
  3. 点击+图标添加新的证书。
  4. Development下选择iOS App Development.
  5. 上传之前创建的CSR
  6. 下载新创建的证书

查看新证书的详细信息

$ 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发行证书已经过期,所有的生产应用现在都在使用新证书生成的配置文件。我们没有遇到任何问题,所以我认为我们可以有把握地得出结论,美国国家代码不是问题。

最新更新