fhc*_*cat 4 openssl code-signing code-signing-certificate
标题说明了一切。我能找到的所有文章要么是关于生成自签名 SSL 证书,要么是不考虑 CSR。我的要求很简单:生成一个自签名代码签名证书,我可以将其与 CSR 中的signtool.exe 一起使用以进行测试。
Jas*_*gan 10
我希望这个问题是重复的,但我找不到简洁的答案,因此我将其作为更完整的问题提供,使用 OpenSSL 生成用于代码签名(或任何其他目的)的x509自签名证书。
脚步:
我将使用与真实组织没有任何关系的假公司(The Company Ltd)
有关 BER、DER 和 CER 格式的说明,请参阅Wikipedia 。注意 .cer 通常用作 DER 文件的文件扩展名 - Doh!另请参阅维基百科有关 PKCS12 格式的信息
1 - 生成 CA 密钥
openssl genrsa -des3 -out rootCA.key 4096
Run Code Online (Sandbox Code Playgroud)
给根 CA 密钥一个密码,不要忘记!
2 - 创建 x509 CA 证书(DER 编码)
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
Run Code Online (Sandbox Code Playgroud)
输入详细信息:[示例]
3 - 编辑 CSR 模板:code_sign_csr.conf
[ req ]
default_bits = 2048 # RSA key size
encrypt_key = yes # Protect private key
default_md = sha256 # MD to use
utf8 = yes # Input is UTF-8
string_mask = utf8only # Emit UTF-8 strings
prompt = yes # Prompt for DN
distinguished_name = codesign_dn # DN template
req_extensions = codesign_reqext # Desired extensions
[ codesign_dn ]
commonName = the-company.com
commonName_max = 64
[ codesign_reqext ]
keyUsage = critical,digitalSignature
extendedKeyUsage = critical,codeSigning
subjectKeyIdentifier = hash
Run Code Online (Sandbox Code Playgroud)
4 - 使用模板生成 CSR
[ req ]
default_bits = 2048 # RSA key size
encrypt_key = yes # Protect private key
default_md = sha256 # MD to use
utf8 = yes # Input is UTF-8
string_mask = utf8only # Emit UTF-8 strings
prompt = yes # Prompt for DN
distinguished_name = codesign_dn # DN template
req_extensions = codesign_reqext # Desired extensions
[ codesign_dn ]
commonName = the-company.com
commonName_max = 64
[ codesign_reqext ]
keyUsage = critical,digitalSignature
extendedKeyUsage = critical,codeSigning
subjectKeyIdentifier = hash
Run Code Online (Sandbox Code Playgroud)
5 - 创建签名证书模板:code_sign_cert.conf
authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:FALSE
subjectAltName = @alt_names
extendedKeyUsage = codeSigning
[alt_names]
DNS.1 = the-company.com
Run Code Online (Sandbox Code Playgroud)
6 - 通过使用 CA 证书签署 CSR 来生成 x509 签名证书和密钥对
openssl req -new -newkey rsa:2048 -keyout testsign.key -sha256 -nodes -out testsign.csr -subj "/CN=The Company Engineering Code Sign Cert" -config code_sign_csr.conf
Run Code Online (Sandbox Code Playgroud)
(5) 和 (6) 中的相同过程用于生成进一步的证书。
7 - (可选)将 x509 证书转换为 PKCS12
authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:FALSE
subjectAltName = @alt_names
extendedKeyUsage = codeSigning
[alt_names]
DNS.1 = the-company.com
Run Code Online (Sandbox Code Playgroud)
8 - (可选)查看您的作品
openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in testsign.csr -out testsign.crt -days 365 -CAcreateserial -extfile code_sign_cert.conf
Run Code Online (Sandbox Code Playgroud)
注意并验证发行人和主题
现在将 rootCA 证书提供给需要验证证书的客户端。
将 rootCA 证书和生成的证书提供给服务器、代码作者、电子邮件发送者等。
将 CA 签名密钥存储在一个非常安全的地方,不要共享它或忘记将它放在哪里......(我总是发现这一点是最难的)。
关于主题替代名称的注释
| 归档时间: |
|
| 查看次数: |
5182 次 |
| 最近记录: |