生成了自签名证书,但是密钥文件无法正常工作

时间:2019-06-25 13:18:14

标签: openssl certificate

1)使用How to create a self-signed certificate with OpenSSL的出色答案在Centos 7.4上生成了自签名证书。

2)当我告诉Jenkins容器使用它们时,它停止工作,并说它无法读取.key文件。

3)使用openssl检查.key文件,它是有效的,但是此检查显示的密钥与.key文件中的密钥不同

4)将显示的密钥复制到新文件,告诉詹金斯使用它。可行。

为什么openssl生成的密钥不起作用,但是openssl检查显示的密钥却是呢?

已采取的确切步骤:

p3<-ggplot(DF, aes(x=SD,y=, colour=col))+
geom_histogram(binwidth = 0.1) +
scale_x_continuous(breaks = seq(-2,4, 1))+
 labs(title = "SD from COF")
cd /etc/pki/tls/certs
vim openssl-config.conf

###openssl-config.conf file I created [ req ] default_bits = 2048 default_keyfile = server-key.pem distinguished_name = subject req_extensions = req_ext x509_extensions = x509_ext string_mask = utf8only prompt = no [ subject ] countryName = countryA localityName = cityB organizationName = companyC commonName = server-nameD emailAddress = emailE [ x509_ext ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alternate_names nsComment = "OpenSSL Generated Certificate" [ req_ext ] subjectKeyIdentifier = hash basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alternate_names nsComment = "OpenSSL Generated Certificate" [ alternate_names ] DNS.1 = DNS-name-1 DNS.2 = DNS-name-2 DNS.3 = DNS-name-3 DNS.4 = DNS-name-4 DNS.5 = DNS-name-5 DNS.6 = DNS-name-6 DNS.7 = DNS-name-7

openssl req -config ./openssl-config.conf -new -x509 -sha256 -newkey rsa:4096 -nodes -keyout certificate.key.pem -days 365 -out certificate.cert.pem

乍一看,旧密钥和新密钥看起来几乎相同,第一个以

开头

openssl rsa -in certificate.key.pem -check vim fixed-key.key (paste in the key displayed by above command)

新的,有效的开始于

-----BEGIN PRIVATE KEY----- MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDEzhA5iBOLImBw

如您所见,第一个在第一行没有RSA,但是将RSA添加到第一行和最后一行以更正位置并不能“修复”密钥文件。旧文件长3272字节,新文件长3243字节。

我在做什么错了?

我希望密钥可以工作或文件已损坏,但是我不能通过openssl检查再次显示来“修复”它。

1 个答案:

答案 0 :(得分:0)

没有错。您用来生成密钥的命令以PKCS#8格式将其输出。当您运行openssl rsa -in certificate.cert.pem命令时,密钥将转换为PKCS#1格式。它是相同的密钥,只是格式不同。

Jenkins probably doesn't support PKCS#8,因此您必须使用PKCS#1格式。

您可以在此处找到PKCS#1和PKCS#8之间的区别:PKCS#1 and PKCS#8 format for RSA private key

如果您想自己查看差异,可以使用以下命令:

openssl asn1parse -in certificate.cert.pem

openssl asn1parse -in fixed-key.key