Практическое руководство:UseSslCerts

From Nxt Wiki
Jump to: navigation, search
This page is a translated version of the page How-To:UseSslCerts and the translation is 100% complete.

Other languages:
English • ‎español • ‎italiano • ‎русский • ‎українська

Возможность использовать сертификаты, включено в конфигурацию Jetty в NRS. Вы можете использовать платный, официально подписанный сертификат от CA (rapidssl/verisign/etc), или бесплатно можете самостоятельно создать самоподписанный сертификат и использовать его. Самоподписанный сертификат выдаст предупреждение сертификата, но так как Вы генерировали его, Вы можете доверять ему. Это - ПЛОХАЯ ПРАКТИКА доверять по умолчанию, самоподписанному сертификату SSL, тем более, что Вы не знаете, у кого есть закрытый ключ к этому сертификату!

1 Само подписанный Сертификат

1. Сгенерируйте самоподписанный сертификат. Выполните команду 'openssl', в процессе генерации, система предложит вам ввести некоторую информацию, заполнит ее. Используйте любой период в днях, в течении которых Вы хотите, чтобы сертификат был действующим.

openssl req -new -x509 -out mycert.crt -days 1095

chmod 400 privkey.pem

chmod 400 mycert.crt

2. Преобразуйте сертификат в формат pkcs12 как этого требуется Jetty веб-сервер. Эта команда запросит пароль экспорта. Он не должно быть пустым.

openssl pkcs12 -export -inkey privkey.pem -in mycert-key -out mycert.pkcs12

chmod 400 mycert.pkcs12

3. Создайте новый файл хранилища ключей Jetty. Конфигурация Jetty NRS's предполагает использование по умолчанию пароля 'storepwd' для хранилища ключей, и мы будем использовать его. Это хороший повод для Вас, для того чтобы самостоятельно установить другой пароль и реконфигурировать Jetty с новым паролем, но это выходит за пределы этой Wiki статьи, поэтому, мы будем использовать 'storepwd'. Смотри https://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Configuring_Jetty и файл jetty-ssl.xml внутри дистрибутива NRS для использования вашего личного пароля. Команда keytool запросит пароль. Используйте 'storepwd'.

keytool -importkeystore -srckeystore mycert.pkcs12 -srcstoretype PKCS12 -destkeystore keystore

4a. (только для версий 0.7.x и более ранних) Шаг 3 создайте файл с названием keystore в локальной папке. Просто скопируйте его поверх файла по умолчанию в NRS keystore по пути nxt/etc/keystore, после чего выполните последний шаг - редактирование значений по умолчанию в файле NRS nxt/etc/jetty-ssl.xml, чтобы удалить 3 проблемных оператора:

<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/></Set>

<Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/keystore"/></Set>

<Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>

4b. (только для версий 0.8.x и более поздних) Шаг 3 создайте файл с именем keystore в локальной папке. Просто скопируйте его поверх файла в папке nxt, после чего сделайте последний шаг - редактирование nxt/conf/nxt.properties (создайте этот файл, если он отсутствует) и пропишите следующие операторы:

nxt.uiSSL=true
nxt.apiSSL=true
nxt.keyStorePassword=storepwd

2 CA-подписанный Сертификат

1. Создайте CSR (certificate signing request). Эта 'openssl' команда запросит у вас некоторую информацию, укажите её.

openssl req -new -out mycert.csr

chmod 400 privkey.pem

chmod 400 mycert.csr

2. Отправьте CSR файл mycert.csr тому, кого Вы выбрали своим центром сертификации. Они вышлют Вам обратно сертификат, который они подписали. Они могут выслать Вам (а могут не высылать), также промежуточный и/или корневой сертификат. Переименуйте сертификат, которое они Вам выслали для Вашего сервера, в mycert.crt и удостоверьтесь что для всех файлов который вам выслали, установлены права доступа chmod 400.

2b. Если ваш центр сертификации(eng. "CA"), вместе с сертификатом вашего сервера, предоставил вам такие дополнительные сертификаты как промежуточный/root, который они также подписали для вас, используйте следующую cat команду, и обратите внимание, что порядок файлов ИМЕЕТ ПРИОРИТЕТ. Первый - это ваш сертификат сервера, который для вас был подписан центром сертификации, затем любой промежуточный сертификат(у промежуточных сертификатов также есть свой собственный порядок), затем в конце корневой сертификат, если он был предоставлен Вашим центром сертификации

cat mycert.crt intermediate1.crt intermediate2.cert rootCA.cert > cert-chain.txt

chmod 400 cert-chain.txt

3. Преобразуйте сертификат в формат pkcs12 как требует Jetty web сервер. При выполнении этой команды будет запрос на ввод пароля экспорта. Он не может быть пустым. Если отсутствует промежуточный/root сертификат, тогда вы пропускаете 2b и не имеете файла cert-chain.txt, в этом случае используйте mycert.crt как опцию "-in" вместо cert-chain.txt

openssl pkcs12 -export -inkey privkey.pem -in cert-chain.txt -out mycert.pkcs12

chmod 400 mycert.pkcs12

3. Создайте новый файл хранилища ключей Jetty. Конфигурация Jetty NRS's предполагает использование по умолчанию пароля 'storepwd' для хранилища ключей, и мы будем использовать его. Это хороший повод для Вас, для того чтобы самостоятельно установить другой пароль и реконфигурировать Jetty с новым паролем, но это выходит за пределы этой Wiki статьи, поэтому, мы будем использовать 'storepwd'. Смотри https://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Configuring_Jetty и файл jetty-ssl.xml внутри дистрибутиваNRS для использования вашего личного пароля. Команда keytool запросит пароль. Используйте 'storepwd'.

keytool -importkeystore -srckeystore mycert.pkcs12 -srcstoretype PKCS12 -destkeystore keystore

5a. (только для версий 0.7.x и более ранних) Шаг 4 создайте файл с названием keystore в локальной папке. Просто скопируйте его поверх файла по умолчанию в NRS keystore по пути nxt/etc/keystore, после чего выполните последний шаг - редактирование значений по умолчанию в файле NRS nxt/etc/jetty-ssl.xml, чтобы удалить 3 проблемных оператора:

<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/></Set>

<Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/keystore"/></Set>

<Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>

5b. (только для версий 0.8.x и более новых) Шаг 4 создайте файл с именем keystore в локальной папке. Просто скопируйте его поверх в папку nxt и перейдите к последнему шагу - редактирование nxt/conf/nxt.properties (создайте этот файл если он отсутствует ) и введите следующие операторы:

nxt.uiSSL=true
nxt.apiSSL=true
nxt.keyStorePassword=storepwd