我一直在尝试为我的 MacOS 和 iOS 设备生成 S/MIME 证书,但似乎没有成功。我研究过这个问题,似乎需要 keyUsage 和 extendedKeyUsage 才能工作。
这些需要输入到 openssl.cnf
[usr_cert]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth,emailProtection
subjectAltName=email:move
我将这三行添加[usr_cert]
到/System/Library/OpenSSL/openssl.cnf
如 [CA_Default] 中所述,x509_extensions = usr_cert
从那里我发出以下命令
openssl genrsa -aes256 -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
openssl genrsa -aes256 -out cert.key 4096
openssl req -new -key cert.key -out cert.csr
openssl x509 -req -days 365 -in cert.csr -CA ca.crt -CAkey ca.key -set_serial 00 -out cert.crt
openssl pkcs12 -export -in cert.crt -inkey cert.key -name “[电子邮件保护]“-出证书.p12
执行此操作后,我获得了 CA 证书和 S/MIME 证书,但是当我检查 keyUsage 和 KeyUsage Extensions 是否存在时:
openssl x509 -text -noout -in cert.crt
他们不在那里。
我正在编辑默认的 openssl.cnf 文件
谢谢您的帮助
答案1
Meta:这是 OpenSSL,但不是 Mac 专用的。OpenSSL 的大多数用途都与安全有关。我建议标记 openssl。
OpenSSL 配置文件中的许多设置都默认使用与平台相关的位置,就像您指定的位置一样,但可以覆盖仅限req
和ca
公用事业,后者被创建为一个最小 CA 并颁发证书。该x509
实用程序的主要工作是显示、检查和转换证书;使用颁发证书x509 -req -CA [-CAkey]
是一个附加组件,它不具备所有功能ca
。特别是,如果您在命令行中指定,而不是在配置文件中指定,它只会添加扩展。(并且它根本无法从 CSR 继承扩展,尽管这对您来说似乎不是问题。)
解决方案:使用ca
配置文件中所需的设置,或使用x509 -req -CA [-CAkey]
指向-extfile [-extensions]
具有所需扩展名的文件或文件部分 - 可能是但不一定是标准配置文件。
还:对于 CA 证书来说,365 天的生命周期相当短。我认为您需要 SAN,email:copy
而不是,move
因为我个人使用的一个 SMIME 证书(Comodo 的试用版)包含我的电子邮件两个都主题和 SAN。您可能不需要nonRepudiation
(基本) KU;我的证书没有它,而且一般来说,公钥签名可以支持不可否认性的想法在 1980 年代很流行,但在实践中它几乎从未奏效,所以人们几乎放弃了它。另一方面,我怀疑它不会造成任何伤害。