Apache 2.2.3 / mod_ssl / CentOS 5.5 VPS
Unser Zertifikat ist am 06.10.2011 abgelaufen. Auch wenn wir das neue scheinbar korrekt installiert haben, zeigt das Surfen auf der Website immer noch ein abgelaufenes Zertifikat an! Ich habe versucht, meinen Browser-Cache zu löschen und mehrere verschiedene Browser zu verwenden. Relevante Zeilen aus der ssl.conf-Datei (die auskommentierten habe ich ausgeschlossen.):
Listen 127.0.0.1:443
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
# Note - I tried disabling SSLSessionCache with the "none" setting but it didn't help.
<VirtualHost 127.0.0.1:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.crt
SSLCertificateKeyFile /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.key
SSLCertificateChainFile /var/certs/gentlemanjoe.com/new2011/gd_bundle.crt
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ServerAdmin [email protected]
DocumentRoot /var/www/gentlemanjoe.com
ServerName gentlemanjoe.com
<Directory /var/www/gentlemanjoe.com>
AllowOverride All
Order deny,allow
allow from all
</Directory>
</VirtualHost>
Dinge, die ich überprüft habe
Zuerst habe ich versucht, die alten Zertifikats- und Schlüsseldateien in einen völlig anderen Ordner zu verschieben, um sicherzustellen, dass Apache sie nicht noch irgendwie abruft. Nichts hat sich verändert. Aus Spaß habe ich versucht, die neuen Zertifikats- und Schlüsseldateien vorübergehend umzubenennen, und Apache hat sich pflichtbewusst beschwert und den Start abgelehnt.
Dann habe ich versucht, mich nicht täuschen zu lassen, indem ich die falsche Konfigurationsdatei bearbeitet habe. Mit "locate" fand ich nur eine httpd.conf-Datei unter /etc/httpd/conf/httpd.conf. Ich habe auch "locate" verwendet, um zu überprüfen, ob es nur eine ssl.conf-Datei gibt, /etc/httpd/conf.d/ssl.conf. Die Schlüsseldatei habe ich mit OpenSSL generiert. Dabei habe ich die Anweisungen von GoDaddy zum Generieren der CSR befolgt.
Ich habe überprüft, ob ich mit der richtigen Site arbeite, indem ich eine test.html-Datei in den Ordner /var/www/gentlemanjoe.com hochgeladen und überprüft habe, ob ich darauf zugreifen kann. Wenn ich jedoch versuche, die Testdatei in HTTPS anzuzeigen, wird dieselbe Warnung zum Ablauf des Zertifikats angezeigt.
Ich habe überprüft, ob das Zertifikat selbst das richtige Ablaufdatum hat:
openssl x509 -in /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.crt -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
07:e7:49:69:97:96:16
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certificates.godaddy.com/repository, CN=Go Daddy Secure Certification Authority/serialNumber=07969287
Validity
Not Before: Oct 21 17:37:55 2011 GMT
Not After : Oct 8 21:16:03 2013 GMT
Subject: C=CA, ST=BC, L=Burnaby, O=Diamond Bailey Consolidated Commercial Services Ltd, OU= , CN=www.gentlemanjoe.com
Ich habe versucht, das Zertifikat bei GoDaddy mit einer neuen CSR zu tasten, und alles scheint zu funktionieren, aber ich erhalte das gleiche Ergebnis im Browser.
Möglicher Hinweis # 1
Wann immer ich "apachectl restart" mache, sehe ich dies in der error_log-Datei:
[Fri Oct 21 18:03:33 2011] [notice] SIGHUP received. Attempting to restart
[Fri Oct 21 18:03:33 2011] [notice] Digest: generating secret for digest authentication ...
[Fri Oct 21 18:03:33 2011] [notice] Digest: done
[Fri Oct 21 18:03:33 2011] [info] APR LDAP: Built with OpenLDAP LDAP SDK
[Fri Oct 21 18:03:33 2011] [info] LDAP: SSL support available
[Fri Oct 21 18:03:33 2011] [info] Init: Seeding PRNG with 256 bytes of entropy
[Fri Oct 21 18:03:33 2011] [info] Init: Generating temporary RSA private keys (512/1024 bits)
[Fri Oct 21 18:03:33 2011] [info] Init: Generating temporary DH parameters (512/1024 bits)
[Fri Oct 21 18:03:33 2011] [info] Shared memory session cache initialised
[Fri Oct 21 18:03:33 2011] [info] Init: Initializing (virtual) servers for SSL
[Fri Oct 21 18:03:33 2011] [warn] RSA server certificate CommonName (CN) `www.gentlemanjoe.com' does NOT match server name!?
[Fri Oct 21 18:03:33 2011] [info] Server: Apache/2.2.3, Interface: mod_ssl/2.2.3, Library: OpenSSL/0.9.8e-fips-rhel5
[Fri Oct 21 18:03:34 2011] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Fri Oct 21 18:03:34 2011] [info] Server built: Aug 30 2010 12:28:40
Die GoDaddy-Techniker sagen mir, dass das Www und das Nicht-Www keine Rolle spielen sollten, und ich stimme dem eher zu, da die Sicherheitswarnung in meinem Browser nicht die Nichtübereinstimmung von Servernamen beanstandet, sondern einen Ablauf , der anzeigt, dass das alte Zertifikat noch vorhanden ist irgendwie geladen werden.
Möglicher Hinweis # 2
Der HTTP-Server-Antwortheader für http://gentlemanjoe.com lautet "Andromeda" und nicht "Apache". Das kommt mir komisch vor, da mein Googeln von "Andromeda" ein Medienserver-Projekt aufwirft, das auf diesem Server nicht installiert werden würde (aber das kann ich nicht mit Sicherheit sagen, da ich nichts davon eingerichtet habe , der übliche Administrator / Entwickler ist im Urlaub und ich helfe nur einem Freund mit seiner Site.) Außerdem enthält die httpd.conf-Datei nicht die Zeichenfolge "Andromeda", die angibt, dass sie nicht geändert wurde, um dies auszuspucken. Es könnte also die von ihm verwendete Magento-E-Commerce-Plattform sein, aber wozu sollte der standardmäßige Apache-Antwortheader ersetzt werden?
quelle
Antworten:
Etwas ist vor Apache. Schau dir diese Konfiguration an:
Es wird nur auf localhost abgehört, sodass Internet-Clients diesen Service nicht direkt nutzen - sie werden wahrscheinlich von Proxyservern vertreten.
Um zu überprüfen, ob Apache das richtige Zertifikat lädt, rufen Sie den Dienst direkt beim Apache-Listener auf:
openssl s_client -connect 127.0.0.1:443 -showcerts
Nicht sicher über die Andromeda - Header, so wollen wir den Prozess finden:
lsof -i
.Apache wird haben
127.0.0.1:443
, während ein anderer Dienst hat0.0.0.0:443
(oder die öffentliche Adresse des VPS:443
) - das ist derjenige, der das neue Zertifikat benötigt.quelle
Eine häufige Ursache für dieses Problem sind mehrere laufende Instanzen von Apache. Die Konfigurationsänderungen werden von einem Prozess übernommen, den Sie (neu) starten, aber die Anforderung wird von einem alten Prozess bedient, der mit alter Konfiguration ausgeführt wird.
Beenden Sie den Dienst:
Überprüfen Sie, ob die Site noch zugänglich ist. Wenn ja, haben Sie die Ursache identifiziert.
Jetzt lauf
Sie erhalten eine Liste der ausgeführten Apache2-Prozesse und ihrer PIDs. Töte sie alle (Beachten Sie, dass dieser Befehl möglicherweise auch nicht verwandte Prozesse mit Apache in ihrem Namen / Benutzer usw. zurückgibt, wie z. B. Apache Tomcat. Möglicherweise möchten Sie sie nicht töten.)
Führen Sie ps aux erneut aus und stellen Sie sicher, dass keine Prozesse mehr ausgeführt werden.
Überprüfen Sie erneut, ob die Site zugänglich ist. Das sollte nicht sein.
Starten Sie nun den Apache-Dienst
Stellen Sie sicher, dass das neue Zertifikat bereitgestellt wird.
Wenn Sie keine Prozesse beenden möchten, können Sie das System neu starten. Es wird den gleichen Effekt haben.
quelle