
Конвертиране на pfx за използване в Apache
как да конвертираме pfx до cer key и crt и как да ги включим в конфигурация на Apache
преди 5 месеца
Когато имаме предоставен 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>