无法获得Daddy ssl证书以与春季靴一起使用

时间:2018-12-13 19:33:38

标签: java spring spring-boot ssl

我有一份在go爸爸中生成了CSR的证书。

我尝试生成自己的CSR以获取我的域的证书。 我已经按照他们的教程使用CSR生成了商店:

keytool -genkey -alias codesigncert -keypass -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass

但是哥达拒绝了生成的CSR,所以我用了它们生成的CSR。

之后,我在thomasvitale.com的教程中使用了此命令。

keytool -import -alias <my alias> -file <downloadedcertificate file>.crt -keystore keystore.p12 -storepass password

生成的.p12密钥库无法启动,因为spring表示:

DerInputStream.getLength(): lengthTag=109, too big.

读很多,我发现这是密钥库的生成方式和某种版本。因此,我不得不生成另一个密钥库。

要生成当前有问题的密钥库,我尝试按照medium.com的说明进行操作:

使用它来生成密钥库:

keytool -genkey -alias <alias> -keyalg RSA -keystore <keystore.jks> -keysize 2048

使用它来生成CSR:

keytool -certreq -alias <alias> -keystore <keystore.jks> -file <domain>.csr

发送CSR生成ssl证书,并使用tomcat选项下载它们。然后导入证书:

中间证书:keytool -import -trustcacerts -alias <alias> -file gd_bundle-g2-g1.crt -keystore <keystore.jks>

根证书:keytool -import -trustcacerts -alias <alias> -file e2e56xxxxf40c7.crt -keystore <keystore.jks>

然后我以这种方式创建了pcks密钥库:

keytool -importkeystore -srckeystore <keystore.jks> -destkeystore <keystore.p12> -srcstoretype JKS -deststoretype PKCS12 -deststorepass <password> -srcalias <src alias> -destalias <dest alias>

之后,我用于安装证书的spring boot配置是: 在对此问题发表评论后,我更改为使用JKS并删除了密码。

server:
    port: 8443
    ssl:
        enabled: true
        key-store-type: JKS
        key-store: classpath:asgard_keystore.jks
        key-store-password: generated
        key-alias: asgard

将所有这些安装到p12之后,服务器启动正常,但是对服务器的任何请求都将产生:err_ssl_version_or_cipher_mismatchSSL_ERROR_NO_CYPHER_OVERLAP

使用TLS 1.2握手失败(40)捕获到Wireshk中刚刚说的警报21。

我正在使用undertow作为服务器。我不记得我是否在CSR的名称和姓氏字段中使用了域。

使用digicert工具解码我的CSR:

Common name
 <my domain>

Organization
 <my org>

Organizational unit
 <my city>

City/locality
 <my city>

State/province
 <my estate>

Country
 <my country>

Signature algorithm
 SHA256

Key algorithm
 RSA

Key size
 2048

似乎我在做每件事都和每一个教程完全一样,每一次失败:(

根据对问题的评论,keytool -list调用:

.jks的keytool-列表:

Keystore type: jks                                                                                                                                              
Keystore provider: SUN                                                                                                                                          

Your keystore contains 3 entries                                                                                                                                

Alias name: asgard                                                                                                                                              
Creation date: Dec 7, 2018                                                                                                                                      
Entry type: trustedCertEntry                                                                                                                                    

Owner: CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US            
Issuer: CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US                                                      
Serial number: 7                                                                                                                                                
Valid from: Tue May 03 07:00:00 UTC 2011 until: Sat May 03 07:00:00 UTC 2031                                                                                    
Certificate fingerprints:                                                                                                                                       
         MD5:  96<removed>:40                                                                                                  
         SHA1: 2<removed>B8                                                                                      
         SHA256: 97:3A<removed>E9:76:FF:6A:62:0B:67:12:E3:38:32:04:1A:A6                                                
Signature algorithm name: SHA256withRSA                                                                                                                         
Subject Public Key Algorithm: 2048-bit RSA key                                                                                                                  
< not relevant >                                                                                                                                                    
]                                                                                                                                                               

*******************************************                                                                                                                     
*******************************************                                                                                                                     

Alias name: intermediate                                                                                                                                        
Creation date: Dec 14, 2018                                                                                                                                     
Entry type: trustedCertEntry                                                                                                                                    

Owner: CN=<removed>, OU=Domain Control Validated                                                                                                        
Issuer: CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US           
Serial number: 5c<removed>                                                                                                                                
Valid from: Fri Dec 07 20:25:19 UTC 2018 until: Mon Dec 07 18:10:35 UTC 2020                                                                                    
Certificate fingerprints:                                                                                                                                       
         MD5:  31<removed>74:77                                                                                                  
         SHA1: 8D:<removed>:C0:F5:AE:0B                                                                                      
         SHA256: 77:14:9<removed>8B:1D:67:46:1A:67:A2:72:2F:2F:9E:F2:16                                                
Signature algorithm name: SHA256withRSA                                                                                                                         
Subject Public Key Algorithm: 2048-bit RSA key                                                                                                                  
< not relevant >                                                                                                                                                               
]                                                                                                                                                               



*******************************************                                                                                                                     
*******************************************                                                                                                                     


Alias name: server                                                                                                                                              
Creation date: Dec 7, 2018                                                                                                                                      
Entry type: PrivateKeyEntry                                                                                                                                     
Certificate chain length: 1                                                                                                                                     
Certificate[1]:                                                                                                                                                 
Owner: CN=<removed>, OU=São Paulo, O=Ideas Farm, L=São Paulo, ST=SP, C=BR                                                                               
Issuer: CN=a<removed>, OU=São Paulo, O=Ideas Farm, L=São Paulo, ST=SP, C=BR                                                                              
< not relevant >                                                                                             
]                                                                                                                                                               
]                                                                                                                                                               

*******************************************                                                                                                                     
*******************************************                                                                                                               

完整报告:pastebin report

我删除了我认为不相关的部分回复。我发现pkcs(.p12)文件报告为jks类型很奇怪。

此外,我从证书颁发机构收到的文件是:

5<removedhex>6b1b.crt
gd_bundle-g2-g1.crt
gdig2.crt.pem

gd_bundle包含3次-----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----证书。其他两个只是一个。

2 个答案:

答案 0 :(得分:1)

您已告诉Java使用证书的别名为<?php error_reporting(E_ALL ^ E_WARNING); $conn = new mysqli("bad", "bad", "so bad", "too bad, what then?"); //what is in $conn? ?> 。我可以在您的.p12转储中看到“ asgard”实际上是一个CA。查看所有者:

asgard

我猜您实际上是要告诉spring加载.jks文件并指定别名Alias name: asgard Creation date: Dec 14, 2018 Entry type: trustedCertEntry Owner: CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US Issuer: CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US

也请删除codesigncertciphers属性,除非您有充分的理由要覆盖spring的默认设置。 Spring使用最新的安全公告来保持其默认值最新。

最后,更改您的密钥库密码,因为整个互联网现在都知道它是什么了:)

答案 1 :(得分:1)

我已经解决了问题。

在对每张证书进行批量处理后,我发现GoDaddy发出了证书响应和2个相等的中间证书。两者都包含在下载包中,并且那里没有根证书。

发生的事情是,如注释中所述,我有一个自签名的虚拟密钥,但我不知道我必须导入与私有密钥具有相同别名的服务器证书(证书响应)。我当时导入了另一个别名,以为那是别的东西。我的私钥将保持自签名且未通过验证。

我遇到的关于密码的错误是因为我告诉spring使用不是私钥的证书。那些不支持解码握手。

我遇到的另一个问题是,godaddy在您下载的捆绑软件中没有提供根证书。我试图添加两个中间体,而根在它们拥有的存储库中可用。下载并导入正确的根证书后,我便能够将私钥验证证书导入与我的虚拟密钥相同的别名。

所以solutin只是从用于创建CSR的JKS密钥库开始(一个仅包含我生成的私钥的密钥库)。然后在其中添加根证书和中间证书,最后添加与私有密钥具有相同别名的服务器证书(具有十六进制名称的证书)。