2017-08-07 3 views
0

Ich versuche, einen Server mit Client-Authentifizierung auf einem Verzeichnis und Certificate Revocation List (CRL) zu konfigurieren. Es gelang mir, sobald die Client-Client-Authentifizierung funktioniert zu machen, aber ist nicht mehr und ich konnte nie den Widerruf bei der Herstellung Liste arbeitet.Apache-Client-Authentifizierung: Zertifikatverifizie-: Fehler (2): nicht mehr Aussteller-Zertifikat erhalten (LÖSEN)

Hier sind meine Konfigurationsdateien:

  • default-ssl.conf

<IfModule mod_ssl.c> 
 
    <VirtualHost _default_:443> 
 
     ServerAdmin [email protected] 
 
\t \t DocumentRoot /var/www/html \t \t \t \t \t \t 
 
\t \t ErrorLog ${APACHE_LOG_DIR}/error.log 
 
\t \t CustomLog ${APACHE_LOG_DIR}/access.log combined 
 
\t \t \t \t \t \t \t \t 
 
\t \t SSLEngine on 
 
\t \t SSLCertificateFile \t /root/ca/intermediate/certs/www.example.com.cert.pem 
 
\t \t SSLCertificateKeyFile /root/ca/intermediate/private/www.example.com.key.pem 
 
\t \t SSLCertificateChainFile /root/ca/intermediate/certs/ca-chain.cert.pem 
 
\t \t SSLCACertificateFile /root/ca/intermediate/certs/intermediate.cert.pem \t \t 
 
\t \t \t \t \t \t \t \t 
 
\t \t <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
 
\t \t  SSLOptions +StdEnvVars 
 
\t \t </FilesMatch> 
 
\t \t <Directory /usr/lib/cgi-bin> 
 
\t \t \t SSLOptions +StdEnvVars 
 
\t \t </Directory> \t 
 
\t </VirtualHost> 
 
</IfModule>

  • apache2.conf

Mutex file:${APACHE_LOCK_DIR} default 
 
PidFile ${APACHE_PID_FILE} 
 
Timeout 300 
 
KeepAlive On 
 
MaxKeepAliveRequests 100 
 
KeepAliveTimeout 5 
 

 

 
User ${APACHE_RUN_USER} 
 
Group ${APACHE_RUN_GROUP} 
 

 
HostnameLookups Off 
 

 
ErrorLog ${APACHE_LOG_DIR}/error.log 
 

 
LogLevel warn 
 

 
IncludeOptional mods-enabled/*.load 
 
IncludeOptional mods-enabled/*.conf 
 

 
Include ports.conf 
 

 

 
<Directory /> 
 
    Options FollowSymLinks 
 
    AllowOverride None 
 
    Require all denied 
 
</Directory> 
 

 
<Directory /usr/share> 
 
    AllowOverride None 
 
    Require all granted 
 
</Directory> 
 

 
<Directory /var/www/> 
 
    Options Indexes FollowSymLinks 
 
    AllowOverride None 
 
    Require all granted 
 
</Directory> 
 

 
<Directory /var/www/html/testClientCert> 
 
    Options Indexes FollowSymLinks 
 
    AllowOverride None 
 
    SSLVerifyClient require 
 
    SSLVerifyDepth 10 
 
</Directory> 
 

 
AccessFileName .htaccess 
 

 
<FilesMatch "^\.ht"> 
 
    Require all denied 
 
</FilesMatch> 
 

 
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined 
 
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined 
 
LogFormat "%h %l %u %t \"%r\" %>s %O" common 
 
LogFormat "%{Referer}i -> %U" referer 
 
LogFormat "%{User-agent}i" agent 
 

 
IncludeOptional conf-enabled/*.conf 
 

 
IncludeOptional sites-enabled/default-ssl.conf

I verwendet, um die folgenden tuto Wurzel- und Zwischen AC zu erzeugen: https://jamielinux.com/docs/openssl-certificate-authority/ (Teil 1 und 2)

I verwendet, den folgenden Befehl ein Client-Zertifikat zu generieren:

4 erstellen Sie Client-Zertifikat 4.1 erstellen der Client-Schlüssel openssl genrsa -des3 -out client.key 4096

012.351 -

Jetzt ist meine Frage, es scheint, dass mein Zwischenzertifikat nicht vertrauenswürdig ist, wenn ich versuche, auf das Verzeichnis/var/www/html/testClientCert mit Mozilla zuzugreifen (ich importierte Zwischen AC + Client-Zertifikat in Mozilla), ich habe folgende Fehlermeldung:

tail -f 20 /var/log/apache2/* 
 

 
==> /var/log/apache2/access.log <== 
 
127.0.0.1 - - [07/Aug/2017:20:15:48 +0200] "GET /testClientCert/gg.txt HTTP/1.1" 403 9768 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0" 
 

 
==> /var/log/apache2/error.log <== 
 
[Mon Aug 07 20:15:48.741592 2017] [ssl:error] [pid 2262:tid 140536910403328] [client 127.0.0.1:55376] AH02039: Certificate Verification: Error (2): unable to get issuer certificate 
 
[Mon Aug 07 20:15:48.741670 2017] [ssl:error] [pid 2262:tid 140536910403328] [client 127.0.0.1:55376] AH02261: Re-negotiation handshake failed 
 
[Mon Aug 07 20:15:48.741687 2017] [ssl:error] [pid 2262:tid 140536910403328] SSL Library Error: error:14089086:SSL routines:ssl3_get_client_certificate:certificate verify failed

Wie kommt Fehler tritt auf, während ich die Zwischen AC cert mit dem root-AC cert und dass mein Client-Zertifikat signiert ist durch Zwischen AC unterzeichnet?

Antwort

0

Wenn jemand die Antwort muss ich es posten. Der Kommentar in Standard-Konfigurationsdatei (default-ssl.conf) führt mich in dem guten Track:

# Certificate Authority (CA): 
    # Set the CA certificate verification path where to find CA 
    # certificates for client authentication or alternatively one 
    # huge file containing all of them (file must be PEM encoded) 

So ist die Datei SSLCACertificateFile die Wurzel und Zwischenzertifikat enthält. Dann wird die Änderung dieser Linie löst mein Problem:

SSLCACertificateFile /root/ca/intermediate/certs/ca-chain.cert.pem

Ich habe nicht die Lösung für crl finden doch, ich es posten wenn ich es finde.

Verwandte Themen