Браузеры имеют список доверенных сертификатов «центра сертификации». Если сертификат сервера подписан одним из этих сертификатов CA и правильно сформирован, вы не получите предупреждение SSL.
Многие браузеры поставляются со многими распространенными сертификатами CA, такими как Verisign, Thawte и т. Д. Большинство браузеров позволяют импортировать новый CA в этот список доверенных CA.
Как и создание собственного самозаверяющего сертификата сервера, вы можете создать собственный самозаверяющий сертификат CA. Затем вы можете использовать это, чтобы подписать сертификат вашего сервера. Если ваш ЦС не предоставлен известной компанией, чего не было бы, если бы он был создан вами, он должен быть явно импортирован на стороне сервера.
Я раньше xca
делал это раньше. Имеются шаблоны для ЦС и HTTP-серверов. Процедура такая:
- Создайте закрытый ключ для своего CA
- Создайте самозаверяющий CA, используя этот ключ, используя шаблон «CA»
- Создайте личный ключ для вашего прокси-сервера
- Создайте «запрос на подпись сертификата» (CSR), используя второй ключ, ссылаясь на только что созданный центр сертификации.
- «Подпишите» CSR, и вы получите сертификат прокси-сервера, который ссылается на ваш собственный CA.
Затем вам нужно будет экспортировать (в виде файла, если вы используете xca
) сертификат CA (но, конечно, не включать закрытый ключ). .pem
Будет сгенерирован , но вы можете изменить расширение на .crt
. Когда пользователь нажимает на это, ему будет предложено установить его в Firefox и Internet Explorer и, возможно, в других основных браузерах. Что касается автоматической установки этого .crt, вы можете:
- использовать групповую политику на IE
- направьте пользователей на начальную страницу с просьбой загрузить / установить .crt, если они хотят избежать предупреждений.
Затем вы можете использовать функции экспорта по сертификату HTTP-сервера (экспортировать как личный ключ, так и сертификат для серверной части), чтобы поставить его на прокси-сервер.
/etc/ssl/certs/ssl-cert-snakeoil.pem
(это то, что пакет Debianssl-cert
создает для вас). Мы копируем его на хост A и вызываем его/etc/ssl/certs/host-B.pem
(поскольку этот хост может уже иметьssl-cert-snakeoil.pem
). Тогда мы бежимln -s /etc/ssl/certs/host-B.pem $(openssl x509 -noout -hash -in /etc/ssl/certs/host-B.pem)
.