# fichier de configuration apache
# attention, configuration fictive, à débugger. La partie importante est à la fin

<VirtualHost serveur.cgdd.e2.rie.gouv.fr:80>
    # Le FQDN sur lequel répond ce vhost
    ServerName serveur.cgdd.e2.rie.gouv.fr

    # On active la réécriture d'URL et on renvoie de façon permanante vers le protocole https
    RewriteEngine on
    RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L]
</VirtualHost>

<VirtualHost serveur.cgdd.e2.rie.gouv.fr:443>
    Protocols h2

    # Le FQDN sur lequel répond ce vhost
    ServerName serveur.cgdd.e2.rie.gouv.fr

    # Adresse mail de l'administrateur
    ServerAdmin webmaster@localhost

    # Les fichiers de log error et access pour le vhost
    CustomLog ${APACHE_LOG_DIR}/serveur_access.log combined
    ErrorLog ${APACHE_LOG_DIR}/serveur_error.log

    RewriteEngine on

    ### Configuration de la terminaison ssl
    # Activation du ssl
    SSLEngine on
    # Certificat et clé pour le ssl
    SSLCertificateFile /etc/letsencrypt/live/serveur.cgdd.e2.rie.gouv.fr/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/serveur.cgdd.e2.rie.gouv.fr/privkey.pem

    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off

    # On garde le nom d'hôte dans la requête
    ProxyPreserveHost on

    # on configure le RP
    ProxyPass / http://monserveur.interne
    ProxyPassReverse / http://monserveur.interne

    SSLOptions +StrictRequire

    ### Gestion des accès: certificats client si provenance du VPN
    # Répertoire contenant les certificats des autorités de certificiaton des clients autorisés
    SSLCACertificatePath /etc/ssl/ac_personnes_aae/crt
    # Profondeur maximale des certificats de CA pour la vérification des certificats clients
    SSLVerifyDepth 3
    # Active la vérification des révocations basée sur des crl
    SSLCARevocationCheck chain
    # Répertoire contenant les crls
    SSLCARevocationPath /etc/ssl/ac_personnes_aae/crl

    # Obligation d'avoir une carte agent avec un certificat valide quand on vient 
    # des sous-réseaux 10.10.0.0/16 et 10.192.0.0/16
    <Proxy *>
      <If "-R '10.10.0.0/16' || -R '10.192.0.0/16'">
        SSLVerifyClient optional
        RewriteEngine        on
        RewriteCond     %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
        RewriteRule     .? - [F]
        ErrorDocument 403 "Vous devez posseder une carte agent avec certificat pour acceder a ce site"
      </If>
      <Else>
        SSLVerifyClient none
      </Else>
    </Proxy>
    </Proxy>

    ProxyRequests off
</VirtualHost>