阅读这个问题和答案时,似乎这应该是可能的,但我需要更多的帮助来理解答案。
有没有办法将现有 CSR“国家代码”字段的字符串格式从 UTF8 更改为可打印字符串?_
我要反其道而行之,将 PRINTABLESTRING 转换为 UTF8。我不明白如何找到要编辑的正确值,有人能为我详细说明一下吗?为什么十六进制值会像这样垂直列出,我应该这样查找它们吗?我使用的十六进制编辑器称为 Hexer,因为我熟悉 vi 动作(但不熟悉 Hexer 本身)。
https://devel.ringlet.net/editors/hexer/
背景
我正在 FreeIPA 中更新证书。证书颁发机构是 Windows。我已经强制 Windows 以 UTF8 格式颁发我们的证书,方法是确保通过 Windows 上的命令行而不是 GUI 颁发证书。
但现在它正在抱怨证书颁发机构链:
ipa-cacert-manage renew --external-cert-file=./freeipaca-windows-commandline.pem --external-cert-file=./cachain.pem
Importing the renewed CA certificate, please wait
CA certificate chain in ./freeipaca-windows-commandline.pem, ./cachain.pem is incomplete: missing certificate with subject 'CN=example.com ICA Windows-CA,DC=example,DC=com'
我认为这是因为链中的 commonName 字段是 PRINTABLESTRING 而不是 UTF8。这与我们在证书主题字段中遇到的问题相同,直到我们使用 Windows 命令行颁发证书:
# openssl x509 -in cachain.pem -subject -issuer -nameopt multiline,show_type -noout
subject=
domainComponent = IA5STRING:com
domainComponent = IA5STRING:example
domainComponent = IA5STRING:internal
commonName = PRINTABLESTRING:internal.example.com ICA Windows-CA2
issuer=
commonName = PRINTABLESTRING:example.com Root CA Windows-CA1
或者也许有更简单的方法来解决这个问题?
更新
看来我在 Windows 上使用命令行颁发证书并没有解决原来的问题。FreeIPA 4.6.8 仍然认为存在问题。
ipa-cacert-manage renew --external-cert-file=./cert_and_chain.pem
Importing the renewed CA certificate, please wait
Subject name encoding mismatch (visit http://www.freeipa.org/page/Troubleshooting for troubleshooting guide)
The ipa-cacert-manage command failed.
# openssl x509 -in cert_and_chain.pem -subject -issuer -nameopt multiline,show_type -noout
subject=
organizationName = PRINTABLESTRING:EXAMPLE.NET
commonName = PRINTABLESTRING:Certificate Authority
issuer=
domainComponent = IA5STRING:com
domainComponent = IA5STRING:example
commonName = PRINTABLESTRING:example.com ICA Windows-CA
答案1
我不知道(我甚至不知道想了解)具体情况。
可以这么说,证书颁发后,您就无法更改其中的任何内容。
这就是证书的全部用途。