我需要为 Outlook 2003+ 必须使用的电子邮件加密和签名创建证书。我正在使用 OpenSSL,我的自签名根 CA 已经导入到受信任的根 CA 存储中。这些是我创建 Outlook 可导入的 p12 身份文件的步骤:
openssl req -batch -newkey rsa:1024 -keyout KEY.key -out KEY.csr \
-nodes -config openssl.cnf &&\
openssl x509 -req -sha1 -days 1000 -in KEY.csr -CA ca.crt -CAkey ca.key \
-set_serial 1 -out KEY.crt -setalias "FRIENDLY_NAME" \
-clrtrust -addtrust emailProtection \
-addreject clientAuth -addreject serverAuth -trustout &&\
openssl pkcs12 -export -in KEY.crt -inkey KEY.key" -out KEY.p12 \
-name "FRIENDLY_NAME" -passout pass:PASSWD &&\
chmod 0600 KEY_CN.{key,p12} &>/dev/null
这是我的相关部分openssl.cnf
:
[ usr_cert ]
basicConstraints = CA:FALSE
authorityKeyIdentifier = keyid
subjectKeyIdentifier = hash
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = critical, emailProtection
subjectAltName = email:copy
authorityKeyIdentifier = keyid
subjectKeyIdentifier = hash
我检查了另一个有效的 p12 文件以获取这些设置 - 以及-name
上面第三个 openssl 语句中的 cli 选项。
我的问题:Outlook 仍然对此感到窒息(不过,它在 Thunderbird 中有效)。我没有英文错误消息(不过可以提供德语错误消息),这些是我看到的对话框的粗略翻译:
- “授予应用程序密钥的使用:授予/不授予”(您可以在左下角显示密钥详细信息 - 它表示没有描述,也没有上下文信息)
- “重复此过程。无法访问受保护的密钥,请确保指定的密码有效。” (我做到了——我什至在 openssl 和 Outlook 中尝试了所有可能的密码/无密码变体!下一步,我将返回第一个对话框并单击“取消”)
- “底层安全系统出错。访问被拒绝!”
我在 Outlook 中的当前设置:签署电子邮件、传输文本和纯文本签名并附加证书。我还将证书的使用限制为secureEmail并禁用了OCSP。导入证书时(以及生成时),我对每个密码请求都使用了完全相同的密码,并使用了与friendlyName、CN 和别名相同的描述(也许这些可能不同,我只是不想在尝试时冒任何风险)。
我真的不明白 Outlook 不喜欢/想要告诉我什么。如果需要,我很乐意提供更多详细信息。
谢谢!