gra*_*ity 6 c# ruby python perl x509
我正在寻找一个库/模块/包,我可以创建并签署X.509证书,并能够有条件地添加自定义v3扩展 - 这可能相当复杂; 例如,Kerberos PKINIT使用的这个bletchful OpenSSL.cnf片段,仅代表foo@EXAMPLE.ORG:
[v3_extensions]
subjectAltName = email:foo@example.org,
otherName:pkinitSan;SEQUENCE:krb_princ_name_1
[krb_princ_name_1]
realm = EXP:0, GeneralString:EXAMPLE.ORG
principal_name = EXP:1, SEQUENCE:krb_princ_seq_1
[krb_princ_seq_1]
name_type = EXP:0, INTEGER:1
name_string = EXP:0, SEQUENCE:krb_principal_1
[krb_principal_1]
princ0 = GeneralString:foo
在我所知道的语言(包括Perl,Python,Ruby,PHP,Bash和一些C#)中找到的所有内容中,使用openssl命令行和自动生成的.cnf文件...这是一个丑陋的过程.有没有更好的方法呢?(Ruby的'openssl'起初看起来非常好,但后来我到了PKINIT ...)
事实证明,我将这些信息准确地添加到Ruby 1.9.3的文档中,该文档刚刚由James Britt发布 - 看看OpenSSL :: X509 :: Certificate的文档,它应该回答您的所有问题.
如果OpenSSL本身支持该特定扩展,那么修改那里的示例以生成示例中列出的特定扩展应该是直截了当的.
对于更复杂的情况,例如示例中的自定义OtherName,您可能仍然使用OpenSSL :: X509 :: Extension,但遗憾的是还没有记录.另一方面,此类自定义扩展所需的OpenSSL :: ASN1模块已记录在1.9.3中,其中提供的所有代码/建议也应适用于1.9.2.您还可以使用ASN1模块创建subjectAltName的多值版本.