Категорія: Java
Самопідписаний 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 все запрацювало!
Новини CF-OpenSource v11
Оновлення продуктів та додатків
SocialBookmarks Mura Plugin 1.2
Додаток для Mura CMS, додає швидкі посилання на популярні соціальні веб-сайти, наприклад Facebook чи Twitter.
ColdBox 3.0.0 Milestone 4 released
Луїс Маджано (Luis Majano) повідомив про вихід M4 нової гілки фреймворку, а також розмістив дзеркало проекту на RIAForge.
LogBox: Enterprise ColdFusion Logging Library 1.1
Так само на RIAForge з'явилися проекти-сателіти: бібліотека для журналювання LogBox та бібліотека для створення прототипів MockBox.
JavaLoader 1.0 Beta 2 Released
Марк Мендел (Mark Mandel) повідомив про вихід другої бети нового релізу JavaLoader та створив дзеркало проекту на RIAForge, де розміщено стабільну версії.
Реймонд Кемден (Raymond Camden) повідомив про вихід оновлення BlogCFC, знайти його можна на сторінці проекту.
Барні Бувер (Barney Boisvert) повідомив про появу бібліотеки для взаємодії з популярною CDN службою від Amazon.
Чат з Марком Менделом в Java DZone
Не так давно до DZone завітав Бен Форта, тепер це зробила й людина, про котру ми доволі часто згадуємо. Це Марк Мендел, розробник JavaLoader та Transfer ORM.
Як заведено, Марк спочатку розповідає деякі загальні речі про себе, зв'язок Java та ColdFusion та ORM, потім бесіда переходить до обговорення принад інтеграції, використання ORM з ACF9 чи Transfer, та короткого пояснення можливостей JavaLoader.
Про все це докладніше в Tech Chat: Mark Mandel on ColdFusion and Java Integration
Дискусія: чому CFML, а не Java?
Нещодавно Шон Корфілд (Sean Corfield) опублікував невеличку замітку, в якій критично висловився щодо компанії, котра витратила три роки (!) на переписування сайту з CFML на Java.
Обговорення тої самої новини на TechCrunch вилилося в значну дискусію за участі великої кількості авторитетних членів спільноти (навіть Бен Форта завітав!), частина якої перекинулася й на коментарі до посту Шона.
Зокрема, в них відмітився оборонець ідеї переписування (можливо, учасник) Девід Теннерсін (David Tannersyn), котрий викликав нову хвилю обговорення, що призвело до написання Шоном нової ґрунтовної публікації Why CFML? Why not Java?, котра має на меті розставити крапки над "і" в цій дискусії.
Рекомендую до ознайомлення, все доволі цікаво.
Java альтернатива cfexecute
Марк Дрю розповів про зручну заміну cfexecute. Залишимо його приклад для коміту в репозиторій Git в якості пам'ятки для розробників без Java-досвіду:
<!--- since we have made modifications to the files, we need to commit them in git --->
<cfscript>
// first of we set the command to call
cmd1 = "git add TODO.txt";
cmd2 = "git commit -m 'autobackup'";
// the environment variable is empty
envp = arraynew(1);
// and we want to run from a given "root"
path = "/Volumes/iDisk/Documents/TODO";
dir = createobject("java", "java.io.File").init(path);
// get the java runtime object
rt = createobject("java", "java.lang.Runtime").getRuntime();
// and make the exec call to run the command
rt.exec(cmd1, envp, dir);
rt.exec(cmd2, envp, dir);
</cfscript>
Випущено JavaLoader 1.0 Beta
Хороші новини для тих, хто полюбляє поєднувати Java та ColdFusion розробку.
Розробник JavaLoader повідомив про те, що продукт наближається до релізу, а саме пішов у бету.
Також він запрошує долучитися до групи javaloader-dev.
Проблема при обробці деяких JPG-малюнків в ColdFusion 8
Марк Кругер (Mark Kruger) нещодавно опублікував докладне пояснення ситуації, коли за деяких умов спроба обробки JPG-малюнків змушувало перезавантажуватися JVM, з відповідними наслідками для ColdFusion.
Проблема виявилася в некоректній обробці JPG "ICC" профілі в javax.imageio класах з JVM версії 1.6.0_04. Тому, хто раптом має цю версію, варто оновитися, проблему було вирішено вже в наступній збірці (після того вже було ще декілька).
Дізнатися докладніше про суть проблеми та знайти тестові JPG-файли для компроментації можна в оригінальному пості Марка.