Назад | Перейти на главную страницу

Как настроить Apache / Tomcat для доверия внутренним центрам сертификации для запросов https между серверами

Мне нужно выполнять вызовы веб-службы из моего собственного веб-сервера, работающего на Apache / Tomcat. Apache / Tomcat, работающий в Linux, должен выполнять вызовы на сервер Microsoft, на котором работает IIS через HTTPS, который использует внутренний центр сертификации (CA) для SSL.

Как заставить Apache / Tomcat доверять правильному корневому сертификату из этого центра сертификации?

Кроме того, как проверить, работает ли это доверие? Я предполагаю, что запроса браузера с сервера, на котором размещен Apache / Tomcat, недостаточно.

Я предполагаю, что вы уже экспортировали сертификат CA в файл, например "internal-ca.pem". Кроме того, я предполагаю, что именно Tomcat инициирует SSL-соединение с сервером IIS.

Вы жестяная банка должен использовать Java keytool для импорта сертификата в хранилище ключей Java, которое используется вашим механизмом Tomcat. Хранилище ключей для сертификатов CA - $ JAVA_HOME / jre / lib / security / cacerts. Итак, чтобы импортировать ваш новый сертификат internal-ca.pem в это хранилище ключей, вы должны использовать:

$JAVA_HOME/bin/keytool -importcert \
  -keystore $JAVA_HOME/jre/lib/security/cacerts \
  -file /path/to/internal-ca.pem  \
  -trustcacerts -alias internal-ca-1

Пароль по умолчанию для хранилища ключей: Измени это

Убедитесь, что ваш сертификат находится в хранилище ключей:

$JAVA_HOME/bin/keytool -list \
  -keystore $JAVA_HOME/jre/lib/security/cacerts -v | less

Протестируйте соединение с сервером:

openssl s_client -CAfile /path/to/internal-ca.pem -connect server:port

Это должно дать вам ближе к концу своего вывода:

Verify return code: 0 (ok)

Если вы хотите проверить доверие из Tomcat, вам придется написать тестовый код для этого. Извините, я не знаю Java. :-)

SSLProxyEngine on
SSLProxyCACertificateFile /etc/ssl/internal-ca.crt
SSLProxyVerify require