Практичне керівництво: 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