SSL wartet weiterhin auf Antwort

SSL wartet weiterhin auf Antwort

Ich versuche, ein HTTPS zu konfigurieren, aber es funktioniert nicht und ich weiß nicht wirklich, was falsch ist.

Dies sind die Schritte, die ich befolgt habe:

  1. Ich habe ein .pemZertifikat (Zertifikat + Kette) generiert mitlasst uns verschlüsseln, indem Sie den nächsten Befehl verwenden:

    sudo -H ./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory

Die Antwort lautet:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/xxxx.com/fullchain.pem. Your cert
   will expire on 2016-03-07. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
  1. Ich habe einen privaten Schlüssel generiert

    sudo openssl req -new -x509 -days 365 -nodes -out /etc/letsencrypt/live/xxxx.com/fullchain.pem -keyout /etc/letsencrypt/live/xxxx.com/fullchain.key

Hier unten füge ich die Antwort ein:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:xxxx
Locality Name (eg, city) []:xxxx
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxxx
Organizational Unit Name (eg, section) []:xxxx.com
Common Name (e.g. server FQDN or YOUR name) []:test
Email Address []:[email protected]
  1. Ich habe überprüft, ob der Schlüssel den richtigen Wert zurückgibt, den ich im letzten Schritt festgelegt habe:

    sudo openssl x509 -in /etc/letsencrypt/live/xxxx.com/fullchain.pem -noout -subject

Hier unten füge ich die Antwort ein:

subject= /C=US/ST=xxxx/L=xxxx/O=xxxx/OU=xxxx.com/CN=test/
[email protected]
  1. Ich habe einen neuen virtuellen Host eingerichtet, den ich hier unten kopiere:

    <VirtualHost *:443>
      ServerAdmin [email protected]
      DocumentRoot /var/www/html/xxx1/public
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
      ServerName xxxx.com
      SSLEngine on
    
      SSLCertificateFile      /etc/letsencrypt/live/xxxx.com/fullchain.pem
      SSLCertificateKeyFile      /etc/letsencrypt/live/xxxx.com/fullchain.key
    
      <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
      </FilesMatch>
    
      <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
      </Directory>
    
      BrowserMatch "MSIE [2-6]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
    
  2. Ich habe Port 443 auf meinem geöffnet /etc/apache2/ports.conf.

Nach all diesen Schritten muss ich nur noch Folgendes tun sudo service apache2 restart, aber die Konsole wartet nur, bis ich Folgendes bekomme:

Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.

und wenn ich es debugge, journalctl -xekommt folgendes Ergebnis:

-- Unit apache2.service has begun starting up.
Dec 08 19:12:20 devXxxx apache2[21637]: * Starting web server apache2
Dec 08 19:12:20 devXxxx apache2[21637]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 100.114.32.17. Set the 'ServerName' directive globally to suppress this mes
Dec 08 19:12:20 devXxxx apache2[21637]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:443
Dec 08 19:12:29 devXxxx sudo[21613]: pam_unix(sudo:session): session closed for user root
Dec 08 19:12:29 devXxxx polkitd(authority=local)[996]: Unregistered Authentication Agent for unix-process:21628:9475994 (system bus name :1.109, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, loca
Dec 08 19:12:40 devXxxx apache2[21637]: *
Dec 08 19:12:40 devXxxx apache2[21637]: * The apache2 instance did not start within 20 seconds. Please read the log files to discover problems
Dec 08 19:12:40 devXxxx systemd[1]: apache2.service: Control process exited, code=exited status=1
Dec 08 19:12:40 devXxxx systemd[1]: Failed to start LSB: Apache2 web server.
-- Subject: Unit apache2.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit apache2.service has failed.

Nachdem ich diese 20 Sekunden beobachtet habe, die Apache zu laden versucht, habe ich beschlossen, das Zertifikat wie folgt zu testen:

  1. Überprüfen, ob nur 1 Zertifikat vorhanden ist:

    sudo ln -s /etc/letsencrypt/live/xxxx.com/fullchain.pemsudo openssl x509 -hash -noout -in /etc/letsencrypt/live/xxxx.com/fullchain.pem.0

  2. Überprüfen, ob das Zertifikat funktioniert:

    openssl verify -CApath f6361f65.0

aber Überraschung, das passiert nicht ... das Terminal versucht weiterhin, eine Verbindung herzustellen, ohne eine Reaktion zu erhalten.

Kann mir jemand helfen?

Vielen Dank für den Rat.

Antwort1

Zunächst einmal sieht es so aus, als wäre bereits etwas an den Port gebunden 443:

Dez 08 19:12:20 devXxxx apache2[21637]: (98)Adresse wird bereits verwendet: AH00072: make_sock: konnte nicht an Adresse [::]:443 D binden

Als nächstes müssen Sie mit Lets Encrypt keinen eigenen privaten Schlüssel einrichten, das Skript sollte einen für Sie generieren (es sei denn, Sie generieren Ihren eigenen CSR manuell).

Wenn das letsencrypt-autoSkript abgeschlossen ist, sollten sich in Ihrem Zertifikatsverzeichnis 4 Dateien befinden.

  • cert.pem- Dies ist Ihr Zertifikat. In Apache SSLCertificateFilesollte es auf diese Datei verweisen.
  • privkey.pem- Dies ist Ihr privater Schlüssel. BEHALTEN SIE IHN GEHEIM. In Apache SSLCertificateKeyFilesollte er auf diese Datei verweisen.
  • chain.pem- Dies ist die Zertifikatskette, die Ihr Vertrauen begründet. In Apache können Sie SSLCertificateChainFileauf diese Datei verweisen.
  • fullchain.pem- Dies ist eine Kombination aus cert.pemund chain.pem, also Ihr Zertifikat und seine vollständige Vertrauenskette. Zeigen Sie in Apache SSLCACertificateFileauf diese Datei.

Let’s Encrypt-Dokumentation

Antwort2

Für letscypt funktioniert dieser Befehl bei mir, ohne den Server zu stoppen

./letsencrypt-auto certonly --webroot -w /websitedir -d www.domain.com

Nach diesem Vorgang für Nginx können Sie die Zertifikate verknüpfen.

ln -s privkey.pem /etc/ssl/domain.key
ln -s fullchain.pem /etc/ssl/domain.crt

verwandte Informationen