вторник, 24 января 2017 г.

ActiveMQ Websocket - ERR_INSECURE_RESPONSE

Давненько сюда не писала, но тут такой повод чудный, полдня с ним имела половые отношения. Итак, у вас стоит ActiveMQ на сервере, и вы хотите с фронтенда вашего прекрасного сайта через сокет с ним соединиться, чтобы наваять себе, например, чатик. А браузер, зараза такая, вам и говорит: Error in connection establishment: net::ERR_INSECURE_RESPONSE

Говорит он, правда, вам это в том случае, если сайт у вас, как и положено, с https, и соединение с сокетом, соответственно, тоже через wss (а другого вам браузер и не разрешит в таком случае). Теперь надо, чтобы браузер доверился вашему mq, как родному. Для этого нужно сотворить для брокера activemq сертификат, основанный на сертификате домена (он же у вас есть, раз у вас https, правда?)

Итак, по пунктам.

1) sudo openssl pkcs12 -export -in <путь к сертификату> -inkey <путь к ключу> -certfile <путь к сертификату>-out testkeystore.p12

2) sudo /usr/bin/keytool -importkeystore -srckeystore testkeystore.p12 -srcstoretype pkcs12 -destkeystore <имя нового сертификата для mq>.jks -deststoretype JKS

Внимание, путь к keytool может быть другой! Если не нашелся по этому адресу, ищите по серверу. Если стоит java, то и keytool где-то там.

3) В конфиге activemq.xml : <sslContext keyStore="file:${activemq.conf}/<имя нового сертификата для mq>.jks" keyStorePassword="<пароль, который вы задали при создании сертификата>" />

Вуаля. Сохраняем конфиг, перезагружаем activemq, идем пить пиво.