Установка SSL сертификатов для веб-публикации
1. Запрашиваем в УЦ сертификаты для веб-сервера. Хорошо подойдёт одноименный шаблон в Windows CA.
В шаблоне должен быть экспортируемый закрытый ключ, чтобы мы могли выгрузить сертификат и импортировать его в Apache. В запрос сертификата в subject alternative names нужно включить все имена, по которым собираемся обращаться к веб-серверу 1С.
2. Экспортируем полученный сертификат в base64 кодировке, в файле pfx. Также полезно эскпортировать две цепочки сертификатов: одну полную, которая включает сертификат сервера и сертификаты всех УЦ, включая корневой, а также цепочку сертификатов для удостоверяющих центров - к примеру, издающий + корневой (тоже в base64).
Цепочка формируется простым копированием текста сертификата. При этом, сначала идет сертификат самого сервера, затем сертификат промежуточного центра, затем сертификат корневого.
Пример цепочки из трёх сертификатов - сервера, промежуточного УЦ, корневого УЦ
-----BEGIN CERTIFICATE----- MMMHBDCCBOygAwIBAgITYQAAAFF0DWQQF5bVtwAAAAAAUTANBgkqhkiG9w0BAQsF ADBqMQswCQYDVQQGEwJSVTEVMBMGA1UEChMMSW5ub3NldGkgTExDMQ8wDQYDVQQL EwZEZXZPcHMxMzAxBgNVBAMTKklubm9zZXRpIElzc3VpbmcgQ2VydGlmaWNhdGlv biBhdXRob3JpdHkgMTAeFw0yMzAzMzEwOTAzMzVaFw0yODAzMjkwOTAzMzVaMFgx CzAJBgNVBAYTAlJVMRQwEgYDVQQIEwtLYWxpbmluZ3JhZDERMA8GA1UEChMISW5u b3NldGkxDzANBgNVBAsTBkRldk9wczEPMA0GA1UEAxMGMWMtc3J2MIICIjANBgkq hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0Ja0vdRAruH2uK9JvOXPb6K1Dqe9JMxJ th6spKItWQau4Bwq88SIoXLXWGoYcduXuVSIAuN1X42DQ+TmEnujNM3jnNXolrU1 /QRhwgt6FyTXApKNbJBQT0uGeLbT0ypH97hK4ja1p/AmOjoU/2mL5XBo6IP90GpF qi2AiPBPDJBSic8IQ56mhpkTnpIyidkqlGALOal1HWe57Dmb/X6hMUkBZ/Gi/x5m Ld3wTgmGVOaf/sMsoocEdlRVuf7a3/smP6aqsM8bPQcrTA2QDJtD8268Jsz/RxvE +re+uHYThaaVhlh3XfR0ZeVYiwoZOhW3FkbfEGL0EqKw3Jp6HFjKdP6Ef7wBgDld WvoSWxQVTkMQyLUoiLISKw2GIUqRLCk6au5Xe89HoJWgJXayg8IkwYXosQSjcHpC 6G389gmOS+DlSHoBEWJ081CKXUvFzynEN8BzXXX5mS7XcaQMVEq1blhbj0xehVT6 jAPYKVmL6HFFq7dlCKqEDQmWpWxpV2Ps1SK/+yjLFylNQ1UaXRx25q9Zf5qi4zSH W7IRlsN98zXVOR8npVpxhj5eittJHpL4Xmc0KGu/eP0P6xcDhgmJLw9OHNOG3AIO zmK3YuoyaOlqnwXqqvofjbq6IUHfR8CiOHOq/+nM5rQnHkyeBxMVmgHpzYxslNvt Tb7sKcqtQvECAwEAAaOCAbMwggGvMDsGCSsGAQQBgjcVBwQuMCwGJCsGAQQBgjcV CIS57Fn78AbtmzaBproxhfeoFIE1hOfEE62JNAIBZAIBBjATBgNVHSUEDDAKBggr BgEFBQcDATAOBgNVHQ8BAf8EBAMCBaAwGwYJKwYBBAGCNxUKBA4wDDAKBggrBgEF BQcDATAdBgNVHQ4EFgQUlzeJnGw91uUcpLxSRTLClDhHucYwVwYDVR0RBFAwToIG MWMtc3J2ghgxYy1zcnYuaW5mcmEuaW5ub3NldGkucnWCHTFjLXNydi10ZXN0Lmlu ZnJhLmlubm9zZXRpLnJ1ggsxYy1zcnYtdGVzdDAfBgNVHSMEGDAWgBRD2eqA7zmn 87ktOtwKduguCytXADBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vY2RwLm9mZmlj ZS5pbm5vc2V0aS5ydS9wa2kvaW5ub3NldGktcGljYS5jcmwwTwYIKwYBBQUHAQEE QzBBMD8GCCsGAQUFBzAChjNodHRwOi8vY2RwLm9mZmljZS5pbm5vc2V0aS5ydS9w a2kvaW5ub3NldGktcGljYS5jcnQwDQYJKoZIhvcNAQELBQADggIBABIn5MX+zE4E 4ZhD8Cr9E0hRVjcWa5HSEC3B+pv5Rbv853PIwxb3fAqpLyfVTfz/H5fwtQiCkAdH bRRAoXRokLdfu6LbPNPwQroTErTRyLj17/fVTKhk5Cqa/aoaQq3+ywFLEa7bun2O xM4KRxBsaBOHXZUkCTbr5fPzgzMVETxAXWUmaZpZjpXvgzI4cY5KI1JQlsFE5k/A OVJoHlXR1z29GhJFknFBOytzPIGTw8GNZBkqtemDDuxDmufB7cuh515i/R3cRxa4 JBb9JzXxjwBwRk+7Gtg5EWHlT8izS8l9FEKLyxyQNww7GLaMP8CLOzKGoOIqxs6X UM6+XhwiQms/AFxIYi0WHnAaeOPk4JR7KUSHH8bhSne8PImuNG3sO1EEmC5+dY1T NlXj9IOWkU/nd7epakVgei49wtcmM19TFwhGfLTEi8UetTwJFh05/fZqgWxlLHLF wNcCNvbkx6uCQS4jKB1W1fuWVDeK1vTlRNQdCXjwcmdnNww3THhWlg/mBSlhfXxV D5o5lZzRBkcUaF8PipCY0mJDeiFJbjSztWx42+7IbmnL/YzkHUEALul5lg42prxb 1AeCk8SkZnyMxA1eJ+GQ5Ow/4eiV8CFVEdV3EMvQfHPmIM1mFfNmoxFiduh4VnZ0 IhBpbZBEc9Qee35L/6SumjIkIfIFtgLr -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIGgjCCBGqgAwIBAgITeAAAAAJOVWse4UyHoAAAAAAAAjANBgkqhkiG9w0BAQsF ADBlMQswCQYDVQQGEwJSVTEVMBMGA1UEChMMSW5ub3NldGkgTExDMQ8wDQYDVQQL EwZEZXZPcHMxLjAsBgNVBAMTJUlubm9zZXRpIFJvb3QgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwHhcNMjMwMzE1MTIzOTQ2WhcNMzgwMzE1MDk1NTIzWjBqMQswCQYD VQQGEwJSVTEVMBMGA1UEChMMSW5ub3NldGkgTExDMQ8wDQYDVQQLEwZEZXZPcHMx MzAxBgNVBAMTKklubm9zZXRpIElzc3VpbmcgQ2VydGlmaWNhdGlvbiBhdXRob3Jp dHkgMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKzfOwIkyxwoDN8K 0lq6P87vhHyLHCDIncMLFH6TCbxR3t4VeXfBNZsBItDF5+s6h3RzLMOYIZ3SCh11 1PQStBFfDp8nmg7oZe1Bw75yKn4nQwGm4CHRmek8hAGqHn0dhDlklYQ73e05O0kH UMmr/8C4UkWTQ8ymySsdnRqLAXq/GaK5zQk5vRu9f5QHn7Aq/jYS4we+cztdl3Qd OccyS4er567rb/7v8jB2+qaJcwjvJFINJsFP/VwsG74qFF6sHvOPhvoEBwTQ2ect jAbeETRaRvGkYIzDfIwn+zUER//oT3HM3RzFlqPtfsA1g2NRX9AiI1s70lg+i1ci kvtaB6Z2pCYxmoJWbOrxucnzHVMU2lzj4gMpKcYY27qEp8+yuEfwJJB1g1lzOTu4 bqOkDkpp9vg8hMOZbxJwIDDSa3A7VDsIfeJndTlrl4cdkUqDJkONDqVUtEN8FU4B YwEbLPOSRzWKjn0HQxG1vvEBi0YlV2/2Bb7stcoWb+kgcKkRRNTwhuxyzB0wIkjx +7fnNm6QkeFm6XAfOyLz9Go05iDTVZ8yhyYIsrswHBy0P4pAyUDXs4FNPUt0PNWf T56ooAMO1Qz1eYOx6LXJWyvR7lst350n111t6VegTqSfi8SqlQBEHE9d7c41RaZ4 XX01FIVJpZ/1wjvs1r8qhObOIaOhAgMBAAGjggEkMIIBIDAQBgkrBgEEAYI3FQEE AwIBADAdBgNVHQ4EFgQUQ9nqgO85p/O5LTrcCnboLgsrVwAwGQYJKwYBBAGCNxQC BAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYD VR0jBBgwFoAUtnvZHUo0TH1tvWBMl/ILVgWYMBUwQwYDVR0fBDwwOjA4oDagNIYy aHR0cDovL2NkcC5vZmZpY2UuaW5ub3NldGkucnUvcGtpL2lubm9yb290LXJjYS5j cmwwTgYIKwYBBQUHAQEEQjBAMD4GCCsGAQUFBzAChjJodHRwOi8vY2RwLm9mZmlj ZS5pbm5vc2V0aS5ydS9wa2kvaW5ub3Jvb3QtcmNhLmNydDANBgkqhkiG9w0BAQsF AAOCAgEAVcETH5dNHFuBEhKf4yJuDOna+y0IzOulzlKooCt7gR04du0MgfCKNvas loxzUxV3gHaJxd0XtNrueV1R+BnIB2XcZQ7hVDbPW4f+jNoOj/plFiAcUAjGXs/p 9rixqLVRHgUp53B4id+XFGIWgOYzPvBvKtd1azxN1gvdeWUU0b+re1f0O6465afl 19U1DNVneBYwPMdkws2gTJYqXbwrj1s7c6Uxgytcjw4h5RiDQHb8lShT94W8n9Y5 yrfmDBu1enCRd2hDAYxWvPIe9Oug9e03NalRCuCwgnHwhxphs9M6hWRkG5GBkfFZ rQ8cVzUF0ReOEJm7rQsH3LLqe4qPl4EXRxSCtRic9VhRrAG60ao6Te3ymjonPplF 7w/VmTY0C/QRRMMaIBQPzSaL7dNCBeadBJm5o7PmMOMMPfTiiM2LOknj8z0d3ZME T28u3TwP7/P/fqE2OEqtvYuSWjG8peUnHDii5rRF/mwh5oTUB7cTGQh92/ugQhTG oe5p9h8s0a+xOL3LPwWZIfDYzEt5YW6fOuK6WWkjWYGKFsFUnhxapzJEyA6F1PN7 TUVZLygnItg7/jZLmgsZZnX5xt+EhWBbBsDuArPs/z44ln59/HWhTYvn0Y/uoFsN 0+pnmzRktKqh0NpcbWfWLvP9aHTkb7SYqiUQ19r+bodmTs9FUZw= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFpTCCA42gAwIBAgIQLgLa0xqMxqlBQG1W89FJAjANBgkqhkiG9w0BAQsFADBl MQswCQYDVQQGEwJSVTEVMBMGA1UEChMMSW5ub3NldGkgTExDMQ8wDQYDVQQLEwZE ZXZPcHMxLjAsBgNVBAMTJUlubm9zZXRpIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRo b3JpdHkwHhcNMjMwMzE1MDk0NTghXhcNMzgwMzE1MDk1NTIzWjBlMQswCQYDVQQG EwJSVTEVMBMGA1UEChMMSW5ub3NldGkgTExDMQ8wDQYDVQQLEwZEZXZPcHMxLjAs BgNVBAMTJUlubm9zZXRpIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDDSIXXu1D7ZNmc+zYGujM76pWp iRgclEgUsOAiy+Vg4QjAAExnRUG03gr2CjCvQ1y8e3aQX81jKwY/xgza2sl7NniL 6ZLfYESbSxD7SPErHZ3zH5dw8fmNoxh4nAwwowdsxGjqLxqm1KTUG319KE3GBtRS aB2C0WwIZCc+MxKy2bN8RXpgjnMZgDTVcu6U62VJkXRrCHf2I2oKqJacZ98edfEm FYG0cTCg4j7L8ypPReot98oAyLdS7bQqMaqKg2mZCi2OgJ3ws8rMFfqf1ZCGo8PP IJw7y7t8nnKCvQSIAdAshO4/ZpSc5LDbVkeJFsej1cREW1ZiBBCjt/bWKMQ+aV+V +Ubsz/OypNbmRBNZEM8ZwHsYHQRFP0ZTX34RDH4SRm+TGnZCcmUYEEY7zZQSXlxl 1yNrIqHsmb8/2yNtOOo2CLw62KpaCtCkqZOeGhs1cFfDBJU/EHxhsko4NAQdAleW WW0Rem+RYIE1xIJent11111ckrytHRsIkxmG6IrC3eERtiuLnfcn5dflfYYTZVWT zgvKEcso3mYFUvDbFkgXLKxg1WY24I/v6GIs9mtzZ1HK0fHoStlejG2qIebQWK+K 0nT8SWbnfYBi9tQkXlUEwqfmcHwdMFpbkdTbLWSHLme0ZEi8wMS4csx2i0A6qp4f gdMEHPczycGdDNw9cQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUtnvZHUo0TH1tvWBMl/ILVgWYMBUwEAYJKwYBBAGCNxUB BAMCAQAwDQYJKoZIhvcNAQELBQADggIBAI6H6DVa4qb1OBMas6MVRKQuyH2C2qDp HMs+89JYvnTgZzmr4ax4KfYFey4aioOQ2ycCrly1ggvtTF4O5nLnTwlWdJNAEEZF Ypu23R6ui83u7n9ebzTkco5o5GxOBuuARpyX5poH75ZWxQ4X7ed+9gkfn2ydO7ec jp/yywzATNeeTwPyfCrr2EWwwD598OqA6vGtTY6jl0eamZDnNr94XNOY5JJLKouM qVcWkQjIjzIDPqvxakGPVwJwzRW4DorauGVcKBksq0wpIk7DkPqqoNrotDuFPZe1 UVCzpxtxBbK6/7LukZQ9ceH3rJgKejuVY0RMXXvjLx5fyiGJKGSj7voV4JVpdrie mJnCYa4yXWm7f59pkn0FpIc8ga73HSLeq/7feQIBWhV16eL+PCmttJb307mCaKMg F762Ek9HGTJqB/sDFb8cIn2xOuFvpMuEbu3q1ptjG0t44DIQL42jxVBgStH8//tu 2YkEk8jll8k/ttAtnHY7FEp1zpu7HQeaywYeJtI93bu8iyKJZUw0vh+Pojix5rc1 o8tYv1nbfFS1IgRaPULV8uVS7DkauuOZFSc7W2j3ElivYJcu6LNqYVFdVYtK6lsu 3KrqUMFFYDp7NLnKqz+zLWPQZzMElIrdyhzybZGiwgERHEVz7Kqx+z1n5cztCXIu xSEopwMqaN6r -----END CERTIFICATE-----
3. Копируем сертификаты на сервер, где установлен Apache и 1С.
4. Получаем два разных файла для сертификата сервера - открытый и закрытый ключ из загруженного pfx. Как это сделать - описано в разделе OpenSSL.
5. Все сертификаты с открытым ключем (сертификат сервера, цепочку, а также полную цепочку) - копируем в папку certs
/etc/ssl/certs/1c-srv.cer /etc/ssl/certs/ourchain-1c-srv.cer /etc/ssl/certs/ourchain.cer
Закрытый ключ сертификата сервера копируем в папку private
/etc/ssl/private/server.key
6. Если на нашем сервере Apache обслуживает только 1С, то нам просто нужно отредактировать файл с сайтом по умолчанию
/etc/apache2/sites-enabled/000-default.conf
Добавим в него блок virtualhost для всех подключений по https
<VirtualHost *:443> ServerAdmin webmaster@example.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error_ssl.log CustomLog ${APACHE_LOG_DIR}/access_ssl.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/1c-srv.cer SSLCertificateChainFile /etc/ssl/certs/ourchain-1c-srv.cer SSLCertificateKeyFile /etc/ssl/private/1c-srv.key SSLCACertificateFile /etc/ssl/certs/ourchain.cer Protocols h2 http/1.1 </VirtualHost>
В данном конфиге 1c-srv.cer - это файл сертификата нашего сервера, ourchain-1c-srv.cer - это полная цепочка, включающая сертификат сервера, 1c-srv.key - приватный ключ, ourchain.cer - цепочка сертификатов УЦ.
7. Перезапускаем Apache
apachectl restart
8. Если получаем ошибку о том, что директива SSLEngine on непонятна серверу - включаем модуль SSL и перезапускаем Apache снова
sudo a2enmod ssl
9. Проверяем доступность публикации по https.
Делаем редирект с http на https в Apache
Добавляем правила рерайта в файл
/etc/apache2/sites-available/000-default.conf
RewriteEngine On RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/ RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
Перезапускаем Apache
systemctl restart apache2
Если при перезагрузке Apache получаем сообщение об ошибке - скорее всего у нас не установлен mod rewrite.
Установим его и перезапустим Apache снова
sudo a2enmod rewrite