Самопідписаний SSL сертифікат в Railo

Нещодавно зіткнувся з доволі відомою проблемою для CFML-розробників: CFHTTP відмовляється працювати з HTTPS-сайтом якщо сертифікат є само-підписаним, або не засвідченим авторизованим центром. Більше того, у мене сертифікат був у порядку, оглядачі чудово його сприймали, але не Railo.

Стандартним рішенням є додавання відкритої частини сертифікату до сховища ключів (keystore) JVM, котру використовує ColdFusion/Railo.

Але ця процедура може виявитися доволі хитрою, коли мова йде про Railo.

 

Спочатку я спробував піти "правильним" шляхом, та скористатися вбудованими функціями якраз для цього діла:

SSLCertificateList("hostname") чудово показала мені список сертифікатів (а він там був один) потрібного сайту.

SSLCertificateInstall("hostname") без жодних претензій його встановила.

Але ж дулі! Все одно продовжив бачити помилку sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

 

Тоді я взявся за консоль. Спочатку я перевірив чи спрацювали функції:

$ cd ~/webapps/xxxxx/WEB-INF/railo/security/
$ keytool -list -keystore cacerts

Потрібний сертифікат був у списку. Підказка: за умовчанням пароль для keytool є "changeit" (без лапок, звісно).

Про всяк випадок я спробував перевстановити його вручну. Для цього експортував .crt файл сертифікату сайту за допомогою оглядача (Firefox, в моєму випадку) та замінив запис:

$ keytool -delete -alias myalias -keystore cacerts
$ keytool -import -alias myalias -keystore cacerts -file /home/zzz/xxxxx.crt
$ keytool -list -keystore cacerts

Після цього перезапустив Railo та... не отримав нічого.

 

Наступна спроба зареєструвати сертифікат аналогічним способом була пов’язана з JVM, для Ubuntu та JVM від Sun шлях до них виглядає десь так:

/usr/lib/jvm/java-6-sun/jre/lib/security/

Вона теж виявилася невдалою, хоча для Adobe ColdFusion цей спосіб зазвичай працює.

 

Насамкінець я згадав, що Railo має ще кореневий контекст, в моєму випадку це тека

/opt/railo/webapps/ROOT/WEB-INF/railo/security/

Повторивши імпорт ще тут та перезапустивши Railo все запрацювало!

 

Автор: Сергій Галашин | Опубліковано: 01.09.2010 о 22:21 | Категорії: Gotchas - Java - Railo - Security -

Відгуки