пятница, 2 декабря 2011 г.

Змеиные секреты кофе.

Да да.. сегодня мы попытаемся подружить яву и питон через SSL. Точнее HTTP сервер у нас будет на питоне клиент на яве. Про детали написания того и другого я умолчу так как их достаточно на просторах интернета. А вот с SSL сертификатами все интереснее. Информацию приходится собирать по разным источникам. Почему? А потому что ява использует собственное хранилище ключей, а питону как-то пофиг на кофейные заморочки. И соответственно те кто пишут про такие темы как правило затрагивают только один язык.

В общем задача сводится к следующему. Нам надо сгенерировать SSL ключ и сертификат и скормить их питоновскому серверу. А сертификат еще и затолкать в ява хранилище ключей. Вообще невкусность этой ситуевины в некоторой неоднозначности. Keytool может создавать ява хранилища прям с сертификатами а питон с ним обращаться не умеет. А OpenSSL не умеет обращаться с ява хранилищами но умеет генерировать ключ/сертификат в виде понимаемом питонскими библиотеками. Ну еще добавляет некоторого разнообразия тот факт что OpenSSL может генерировать любые ключи, а яве надо х509.

Итак запомнив все это приступим. Для начала сгенерируем просто ключ/сертификат для питонского сервера.

Условимся с названиями файлов
server509k.pem - ключ
server509o.pem - сертификат

#openssl req -new -x509 -keyout server509k.pem -out server509o.pem -days 365 -nodes -passin stdin

Ну и после интуитивной беседы с данной утилитой получаем требуемое. По конкретике опций запуска есть ман и гугль

Теперь затолкаем сертификат в ява хранилище, которое носит гордое имя keystore.jks... ну или любое другое по желанию, но не менее гордое.

#keytool -importcert -keystore keystore.jks -validity 360 -file server509o.pem

Как вы уже поняли я не посмею лишить читателя удовольствия самому погуглить и покурить маны и даю только общие направление и рецепт который заработал для меня.

Ах да.. чуть не забыл. В коце диалога с кейтулом будет важный вопрос доверительный ли сертификат, в моем случае - да.

Trust this certificate? [no]: yes

После этого полученное хранилище можно скормить своему или не очень ява монстрику и он запросто начнет секретничать со змеиным сервером.

З.Ы. только не оставляйте их без присмотра.. а то малоли до чего эти мутанты договорятся.