2013-08-01 19 views
5

Sto tentando di configurare Apache per utilizzare una chiave privata e un certificato per l'utilizzo di SSL. Il problema è che Apache pensa in qualche modo che il file CRT e non corrispondono:Apache2 Certificato SSL/mancata corrispondenza del codice

[Thu Aug 01 11:35:18 2013] [warn] RSA server certificate wildcard CommonName (CN) `*.-----.nl' does NOT match server name!? 
[Thu Aug 01 11:35:18 2013] [debug] ssl_engine_init.c(846): Configuring RSA server private key 
[Thu Aug 01 11:35:18 2013] [error] Unable to configure RSA server private key 
[Thu Aug 01 11:35:18 2013] [error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch 

Dopo questo errore ho controllato montone castrato o no la chiave e il certificato abbinato utilizzando:

$ openssl x509 -noout -modulus -in server.crt | openssl md5 
$ openssl rsa -noout -modulus -in server.key | openssl md5 

E il i risultati sono uguali, quindi sembra che la chiave e il certificato corrispondano !? configurazione Il sito contiene il folowing per SSL set-up:

SSLCertificateFile /etc/ssl/certs/server.crt 
    SSLCertificateKeyFile /etc/ssl/private/server.key 

Il certificato è firmato da una CA sé creato, che io uso per i miei clienti. In questo momento sto ospitando il sito HTTPS tramite Java (e Chrome/Firefox/IE/Safari/... tutti accettano il certificato e la chiave), tuttavia le prestazioni non sono come mi piacerebbe, quindi sono Sono disposto a passare ad Apache. Tuttavia non capisco perché Apache dice che il certificato e la chiave non corrispondono? Ho cercato molto su questo errore e ho trovato molti risultati, ma nessuno rappresenta la mia situazione né fornisce una soluzione valida per il mio problema. Il motivo per cui utilizzo la mia CA è che ho qualche centinaio (e conteggio) di certificati in uso per una rete basata sulla fiducia.

edit: La questione sembra openssl correlate, ho provato quanto segue con lo stesso errore finale:

..............:~$ openssl s_server -cert server.crt -key server.key 
140518544565920:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319: 
140518544565920:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:831: 
140518544565920:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:751:Field=n, Type=RSA 
140518544565920:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115: 
Using default temp DH parameters 
Using default temp ECDH parameters 
error setting private key 
140518544565920:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:331: 

Qualcuno mi può puntare nella giusta direzione per quello che sto facendo male?

ho retranscoded il JKS utilizzato direttamente utilizzato dal server web (accettato da tutti i browser) per certificato PEM e la chiave privata, ma ancora quando ottengo lo stesso errore da OpenSSL:

openssl s_server -debug -cert server.crt -key server.key 
Using default temp DH parameters 
Using default temp ECDH parameters 
error setting private key 
140157841004192:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:331: 

Come è possibile che tutti i browser accettano la combinazione key/cert e openssl rifiuta di usarli insieme?

+0

Hai capito? – Nick

+0

Vedere: http://stackoverflow.com/questions/4658484/ssl-install-problem-key-value-mismatch-but-they-match-match – kenorb

+0

@Nick? per favore spiega il tuo commento. –

risposta

3
$ openssl s_server -cert server.crt -key server.key 
140518544565920:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319: 
140518544565920:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:831: 
140518544565920:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:751:Field=n, Type=RSA 
140518544565920:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115: 

Aggiungi -keyform. Può essere DER o PEM. Dovrai cercare server.key per determinare il modulo.

Se server.key ha --- BEGIN RSA PRIVATE KEY --- (o simile), il suo PEM. Se non è codificato in PEM, prova DER.

Inoltre, server.key potrebbe essere crittografato. Potrebbe essere necessario ri-salvare la chiave senza passphrase.

3

Che aspetto ha il file degli host virtuali? Senza vedere quel file è difficile dire perché stai ricevendo l'avviso. Tuttavia, è probabile che l'avviso provenga dal file degli host virtuali con un nome server diverso da quello per cui è stato impostato il certificato SSL.
Controllare il file host virtuali e cambiare

<VirtualHost _default_:443> 

a

<VirtualHost *:443> 

o anche

<VirtualHost yoursevername:443> 
+0

Il problema è relativo a open_ssh poiché si verifica anche in ope_ssl senza apache. il nome host non è quindi correlato. Il file degli host virtuali è impostato come

0

Indipendentemente da ciò che avete nella vostra linea <VirtualHost ...:443>, penso che il problema è indicato da la riga nel tuo log degli errori:

[warn] RSA server certificate wildcard CommonName (CN) `*.-----.nl' does NOT match server name!? 

Qual è il ServerName dal vostro VirtualHost e lo fa corrisponde al CN del certificato, vale a dire l'ultima voce in "Oggetto:" linea di uscita dal openssl x509 -noout -text -in <certfile>

Inoltre, hai provato il suggerimento di noloader?

Problemi correlati