如何为签名文件创建自己的证书?

6

有没有办法创建自己的签名证书,以便对安装包等文件进行签名?

问题是证书供应商必须是Windows信任的来源,否则您将收到警告消息吗?

1个回答

18
如果您对PKI和X.509有基本的了解,可以使用openssl进行操作。
Openssl预配置了CA.pl或CA.sh脚本,可用于设置您的CA并生成具有最小配置的证书。
主要命令包括:
# generate CA (need to do it only once)
CA.sh -newca
# create certificate request
openssl req -new -keyout user.key -out user.req -config yourconf.cnf
# sign request by CA
openssl ca -policy policy_anything -config yourconf.cnf -out user.pem -infiles user.req
# convert it into PKCS#12 (pfx) container, that can be used from various soft
openssl pkcs12 -export -in user.pem -inkey user.key -out user.p12 -name user -caname your_ca_name -chain -CAfile ./demoCA/cacert.pem

yourconf.cnf是基于默认的openssl.cnf文件的主配置文件。 要使您的证书适用于代码签名,您应该在允许的密钥使用字段中指定它,如下所示(它将仅限制您的证书仅用于代码签名):

[ usr_cert ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature
extendedKeyUsage = codeSigning  
[ v3_req ]
keyUsage = digitalSignature
extendedKeyUsage = codeSigning

要在Windows中使用此证书,您应将您的CA证书作为CA机构安装到Windows证书存储中。您必须在每个工作场所执行此操作,以便验证文件上的签名。


CA.sh的链接已经消失。 - Midori Kocak
CA.pl文档的更新链接(脚本本身包含在分发中)在此处:https://www.openssl.org/docs/man1.1.0/apps/CA.pl.html - InteXX
我在“#创建证书请求”时收到此错误信息:configuration file routines:NCONF_get_string:no value:conf_lib.c:324:group=req name=distinguished_name - Marinos An

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接