...

Конвертиране на pfx за използване в Apache

как да конвертираме pfx до cer key и crt и как да ги включим в конфигурация на Apache
преди 1 ден

Когато имаме предоставен pfx сертификат и искаме да го използваме в Apache - трябва да го конвертираме до 3 различни файла:

  • сертификата (.cer)
  • ключа (.key)
  • сертификата на издателя (.crt)

Тези три файла може да използваме в конфигурацията на Апаха.
Ако сертификата е генериран с ключ - с долните команди ще го махнем, тъй като при стартиране на Апаха няма как да напишем паролата.
Ако има ключ - той ще ви бъде поискан при всяка команда, но няма да е включен в крайните файлове.
Приемаме, че нашият pfx файл е записан в /etc/apache2/certs с име my-domain.pfx и ние сме в тази директория.
Първо експортваме сертификата:

 openssl pkcs12 -in my-domain.pfx -clcerts -nokeys -out my-domain.cer

След това експортваме ключа:

openssl pkcs12 -in my-domain.pfx -nocerts -nodes  -out my-domain.key

Последно експортваме сертификата на издателя:

openssl pkcs12 -in my-domain.pfx -out ca.crt -nodes -nokeys -cacerts

Koнфигурацията, която трябва да добавим в апаха е:

<VirtualHost my-domain:80>
            ServerAdmin mail@my-domain
            DocumentRoot /home/user/public_html/my-domain/public
            ServerName my-domain
            setenvIf Request_URI ".(jpg|jpeg|png|css|gif|ico|js)$" dontlog
            ErrorLog "/var/log/apache2/my-domain.err.log"
            CustomLog "/var/log/apache2/my-domain.acc.log" common env=!dontlog

        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

            <Directory /home/user/public_html/my-domain/public>
                Options FollowSymLinks
                AllowOverride All
                Require all granted
            </Directory>
</VirtualHost>
<VirtualHost my-domain:443>    
    ServerName my-domain    
    SSLEngine on    
    SSLCertificateFile /etc/apache2/certs/my-domain.cer    
    SSLCertificateKeyFile /etc/apache2/certs/my-domain.key    
    SSLCACertificateFile /etc/apache2/certs/ca.crt    

    setenvIf Request_URI ".(jpg|JPG|jpeg|JPEG|png|PNG|css|CSS|gif|GIF|ico|ICO|js|JS)$" dontlog    
    ErrorLog "/var/log/apache2/my-domain-ssl.err.log"    
    CustomLog "/var/log/apache2/my-domain-ssl.acc.log" common env=!dontlog    

    DocumentRoot /home/user/public_html/my-domain/public    
    ServerName my-domain    

    <Directory /home/user/public_html/my-domain/public>
        SSLRequireSSL
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>