web-dev-qa-db-fra.com

Comment configurez-vous les certificats SSL pour des ports supplémentaires dans Apache?

Question simple, je voulais juste savoir comment installer des certificats SSL sur d'autres ports d'un serveur Web. J'essaie de faire en sorte qu'une application Web dispose d'un certificat SSL valide. J'utilise Apache2. J'ai déjà essayé de modifier le fichier virtualhost. Je ne sais même pas ce que j'essaie de faire.

1
Dan Vu

Vous apportez des modifications dans le /etc/Apache2/ports.conf d'Apache pour informer Apache d'écouter sur ces différents ports:

Listen 8080
<IfModule ssl_module>            
        Listen 446
</IfModule>

Les étapes seraient les suivantes:

  1. Créez vos certificats SSL:

    • Créer un répertoire pour ajouter des certificats:

      mkdir -p /etc/Apache2/ssl/example.com
      
    • Créez un certificat auto-signé:

      Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/Apache2/ssl/example.com/Apache.key –out /etc/Apache2/ssl/example.com/Apache.crt
      
  2. Activez le module ssl avec: Sudo a2enmod ssl

  3. Faites des entrées dans vos fichiers Virtualhost (appelé example.conf), avec Sudo nano /etc/Apache2/sites-available/example.conf

    <VirtualHost *:8080>
        ServerAdmin webmaster@localhost
        ServerName example.com
        DocumentRoot /var/www/html
    
    </VirtualHost>
    
    
    <IfModule mod_ssl.c>
    <VirtualHost *:446>
    
        ServerAdmin webmaster@localhost
        ServerName example.com
        DocumentRoot /var/www/html
    
        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual Host.
        SSLEngine on
    
        #   A self-signed (snakeoil) certificate can be created by installing
        #   the ssl-cert package. See
        #   /usr/share/doc/Apache2.2-common/README.Debian.gz for more info.
        #   If both key and certificate are stored in the same file, only the
        #   SSLCertificateFile directive is needed.
        SSLCertificateFile /etc/Apache2/ssl/example.com/Apache.crt
        SSLCertificateKeyFile /etc/Apache2/ssl/example.com/Apache.key
    </VirtualHost>
    
    </IfModule>
    
  4. Dites à Apache d'écouter les nouveaux ports en ajoutant les ports au fichier /etc/Apache2/ports.conf:

    Listen 8080
    <IfModule ssl_module>            
        Listen 446
    </IfModule>
    
    <IfModule mod_gnutls.c>
        Listen 446
    </IfModule>
    
    • Cela indique à Apache d'écouter le trafic SSL sur le port 446 par rapport à 443.
  5. Activer les fichiers de configuration:

    Sudo a2ensite example
    
  6. Redémarrez Apache:

    Sudo systemctl restart Apache2
    
3
George Udosen

D'abord, vous devriez lire ces réponses:

Sur la base des réponses ci-dessus, les étapes sont les suivantes:

  • Créez un nouveau fichier de configuration VirtualHost, dédié à votre port supplémentaire. Supposons qu'il s'agit du port 99 et que le nom du fichier de configuration est https-99.conf:

    Sudo nano /etc/Apache2/sites-available/https-99.conf
    

    Le contenu de https-99.conf devrait ressembler à ceci:

    <IfModule mod_ssl.c>
    
    Listen 99
    
    <VirtualHost *:99>
    
            ServerName www.example.com
    
            DocumentRoot /var/www/html-99
    
            <Directory /var/www/html-99>
                    Options None FollowSymLinks
                    AllowOverride None
                    # To enable .htaccess Overrides: AllowOverride All
                    DirectoryIndex index.html index.php
                    Order allow,deny
                    Allow from all
                    Require all granted
            </Directory>
    
            ErrorLog ${Apache_LOG_DIR}/https-99.error.log
            CustomLog ${Apache_LOG_DIR}/https-99.access.log combined
    
            SSLEngine on
            SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
            SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
            SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
    
    </VirtualHost>
    
    </IfModule>
    

    Copiez le contenu ci-dessus et dans nano, utilisez: Shift+Insert pour la pâte; Ctrl+O et Enter pour sauver; Ctrl+X pour la sortie.

  • Activer le fichier de configuration:

    Sudo a2ensite https-99.conf
    
  • Générer cryptons fichiers de certificat:

    Sudo letsencrypt --Apache certonly --rsa-key-size 4096 --email [email protected] -d www.example.com
    

    [email protected] et www.example.com doivent être réels.

  • Ouvrez le port 99 dans le pare-feu:

    • Si vous utilisez UFW vous pouvez le faire avec cette commande: Sudo ufw allow 99/tcp

    • Si vous utilisez IPTables : Sudo iptables -A INPUT -p tcp -m tcp --dport 99 -j ACCEPT

  • Créez le répertoire DocumentRoot:

    Sudo mkdir /var/www/html-99
    
  • Mettez du contenu simple dans le répertoire DocumentRoot:

    echo 'Hello!!!' | Sudo tee /var/www/html-99/index.html
    
  • Rechargez la configuration d'Apache:

    • Ubuntu 14.04: Sudo service Apache2 reload
    • Ubuntu 16.04: Sudo systemctl reload Apache2.service
  • Essayez d'ouvrir https://www.example.com:99 via le navigateur. Le résultat devrait être:

    enter image description here

3
pa4080