2013-08-01 15 views
5

Próbuję skonfigurować Apache, aby używał prywatnego klucza i certyfikatu do użycia SSL. Problem polega na tym, że Apache jakoś uważa, że ​​kluczem i CRT pliki nie pasują:Certyfikat Apache2 SSL/Niezgodność klucza

[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 

Po tym błędzie Sprawdziłem pogoda lub nie klucz i certyfikat dopasowane przy użyciu:

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

a wyniki są takie same, więc wydaje się, że klucz i certyfikat się zgadzają !? Moja konfiguracja strona zawiera folowing do ustanowienia połączenia SSL:

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

Certyfikat jest podpisany przez siebie stworzony CA, które używam dla moich klientów. W tym momencie hostuję stronę HTTPS przez Javę (i Chrome/Firefox/IE/Safari/... wszystkie akceptuję certyfikat i klucz), jednak wydajność nie jest taka, jakbym chciała, stąd " Jestem skłonny przejść na Apache. Jednak nie rozumiem, dlaczego Apache mówi, że certyfikat i klucz nie pasują do siebie? Mam dużo google na ten błąd i znalazłem wiele wyników, jednak żaden nie reprezentuje mojej sytuacji ani nie dostarcza poprawnego rozwiązania mojego problemu. Powodem używania własnego urzędu certyfikacji jest to, że mam kilkaset (i liczących) certyfikatów używanych w sieci opartej na zaufaniu.

edit: Problem wydaje openssl związane, i przetestowane następujące z tego samego błędu końcowego:

..............:~$ 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: 

Czy ktoś może wskazać mi w dobrym kierunku, co robię źle?

I retranscoded zużytą JKS bezpośrednio używany przez serwer (zaakceptowany przez wszystkich przeglądarkach) do świadectwa PEM i klucza prywatnego, ale kiedy się ten sam błąd z 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: 

Jak to możliwe, że wszystkie przeglądarki akceptują kombinację key/cert, a openssl odmawia ich użycia razem?

+0

Czy to wymyśliłeś? – Nick

+0

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

+0

@Nick? proszę wyjaśnij swój komentarz. –

Odpowiedz

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: 

Dodaj -keyform. Może to być DER lub PEM. Będziesz musiał spojrzeć na server.key, aby określić formularz.

Jeśli server.key ma --- BEGIN RSA PRIVATE KEY --- (lub podobny), jego PEM. Jeśli nie jest kodowany PEM, spróbuj DER.

Również, server.key może być zaszyfrowany. Być może trzeba będzie ponownie zapisać klucz bez hasła.

3

Jak wyglądają pliki wirtualnych hostów? Bez obejrzenia tego pliku trudno jest określić, dlaczego otrzymujesz ostrzeżenie. Jednak najprawdopodobniej ostrzeżenie pochodzi z pliku hostów wirtualnych o innej nazwie serwera niż ta, dla której ustawiono certyfikat SSL.
Sprawdź plik hostów wirtualnych i zmienić

<VirtualHost _default_:443> 

do

<VirtualHost *:443> 

lub nawet

<VirtualHost yoursevername:443> 
+0

Problem jest związany z open_ssh, ponieważ występuje również w ope_ssl bez apache. nazwa hosta nie ma związku. Plik hostów wirtualnych jest skonfigurowany jako

0

Niezależnie od tego, co masz w swojej linii <VirtualHost ...:443>, myślę, że problem jest sygnalizowany wiersz w dzienniku błędów:

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

Jaki jest ServerName z VirtualHost i to pasuje do CN certyfikatu, to jest ostatni wpis w polu „Temat:” linia wyjścia z openssl x509 -noout -text -in <certfile>

Również nie spróbować noloader na sugestię?