Оглавление:
Статья последний раз была обновлена 04.03.2023
0
SSL: Comodo – получение и установка подписанного SSL-сертификата, CA Root сертификата и SSL-chain
Rate this (2 Votes)
|
Процедура заказа и установки платного (коммерческого) сертификата – практически та же самая, не считая деталей при оформлении заказа.
Создание Private Key сервера и .CSR – запроса на получение сертификата
Для начала – создаём сертификат, который мы будем использовать в нашем приложении:
01
|
# keytool -genkey -keysize 2048 -keyalg RSA -alias 0 , -keystore /home/setevoy/.ssh/akiraCom.jks |
02
|
Enter keystore password: |
03
|
Re-enter new password: |
04
|
What is your first and last name? |
05
|
[Unknown]: akira.setevoy.kiev.ua |
06
|
What is the name of your organizational unit? |
07
|
[Unknown]: |
08
|
What is the name of your organization? |
09
|
[Unknown]: |
10
|
What is the name of your City or Locality? |
11
|
[Unknown]: Kiev |
12
|
What is the name of your State or Province? |
13
|
[Unknown]: |
14
|
What is the two-letter country code for this unit? |
15
|
[Unknown]: UA |
16
|
Is CN=akira.setevoy.kiev.ua, OU=Unknown, O=Unknown, L=Kiev, ST=Unknown, C=UA correct? |
17
|
[no]: yes |
18
|
19
|
Enter key password for <akiraCom> |
20
|
(RETURN if same as keystore password): |
Если после заполнения получаете подобную ошибку – попробуйте отписаться в support Comodo – вопрос решили в течении пары часов:
> An account already exists for “kiev.ua”
Потребуется регистрация – но она простая.
Продолжим. Сейчас нам необходимо создать .csr-файл – Запрос на получение сертификата (Certificate signing request). По сути он просто содержит в себе ту информацию, которую вы указали во время генерации сертификата (Private Key) сервера.
1
|
# keytool -certreq -alias akiraCom -file /home/setevoy/.ssh/akiraCom.csr -keystore /home/setevoy/.ssh/akiraCom.jks |
2
|
Enter keystore password: |
1
|
# ls -l | grep akiraCom |
2
|
-rw-r—r— 1 root setevoy 1023 Jan 23 14:12 akiraCom.csr |
3
|
-rw-r—r— 1 root setevoy 2222 Jan 23 14:11 akiraCom.jks |
1
|
# cat akiraCom.csr |
2
|
——BEGIN NEW CERTIFICATE REQUEST—— |
3
|
MIICtzCCAZ8CAQAwcjELMAkGA1UEBhMCVUExEDAOBgNVBAgTB1Vua25vd24xDTALBgNVBAcTBEtp |
4
|
… |
5
|
HA8oFRfKN/pZXPLpvTJKwcgI7eD/HTXEcEidFQZ6G044OKbyZ2Tr0ytxt1w3Cqq+3pbZTawROPmR |
6
|
to8Rbw+AfgOE0xNQ4n4C |
7
|
——END NEW CERTIFICATE REQUEST—— |
Переходим на страницу оформления заказа на сертификат, кликаем на Большую Зелёную Кнопку Free Trial SSL, потом на такую же ещё раз – и попадаем на страницу оформления заказа.
Тут в поле 1. вставляем текст из нашего csr-файла:
Выбираем тип подтверждения владения доменом, в данном случае – через почту в этом домене:
Заполняем оставшиеся поля:
Соглашаемся – ставим галочку, и кликаем Большую Синюю Кнопку:
Открываем подсвеченное красным:
В почте находим письмо от Comodo с номером заказа:
В письме находим код:
Вводим его в поле на сайте, кликаем Next:
Всё, ждём. Сейчас письмо с сертификатами пришло буквально через 5 минут, в прошлый раз – только на следующий день.
Так выглядит само письмо:
Нам важно в нём следующее:
1
|
Attached to this email, you should find a .zip file containing: |
2
|
Root CA Certificate — AddTrustExternalCARoot.crt |
3
|
Intermediate CA Certificate — UTNAddTrustSGCCA.crt |
4
|
Intermediate CA Certificate — ComodoUTNSGCCA.crt |
5
|
Intermediate CA Certificate — EssentialSSLCA_2.crt |
6
|
Your Free SSL Certificate — akira_setevoy_kiev_ua.crt |
Это цепочка из Root, Intermediate и самого сертификата для сервера.
Установка Root, Intermediate и подписанного сертификата сервера
Распаковываем архив в удобное место:
1
|
# unzip akira_setevoy_kiev_ua.zip |
2
|
Archive: akira_setevoy_kiev_ua.zip |
3
|
extracting: AddTrustExternalCARoot.crt |
4
|
extracting: UTNAddTrustSGCCA.crt |
5
|
extracting: ComodoUTNSGCCA.crt |
6
|
extracting: EssentialSSLCA_2.crt |
7
|
extracting: akira_setevoy_kiev_ua.crt |
1
|
# ls -l |
2
|
total 64 |
3
|
-rwxr-xr-x 1 root setevoy 1521 May 30 2000 AddTrustExternalCARoot.crt |
4
|
-rwxr-xr-x 1 root setevoy 1679 Dec 1 2006 ComodoUTNSGCCA.crt |
5
|
-rwxr-xr-x 1 root setevoy 1797 Dec 1 2006 EssentialSSLCA_2.crt |
6
|
-rwxr-xr-x 1 root setevoy 1671 Jun 7 2005 UTNAddTrustSGCCA.crt |
7
|
-rwxr-xr-x 1 root setevoy 1846 Jan 23 00:00 akira_setevoy_kiev_ua.crt |
8
|
-rw——- 1 root setevoy 9134 Jan 23 18:37 akira_setevoy_kiev_ua.zip |
Теперь – разберёмся, что из этих сертификатов – Root, какие – Intermediate, т.е. “промежуточные”.
С помощью утилиты keytool посмотрим информацию о сертификате:
1
|
# keytool -printcert -file akira_setevoy_kiev_ua.crt | grep CN |
2
|
Owner: CN=akira.setevoy.kiev.ua, OU=Free SSL, OU=Domain Control Validated |
3
|
Issuer: CN=EssentialSSL CA, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB |
Owner – владелец, т.е. мы;
Issuer – “эмитент”, т.е. – поставщик данного сертифката.
Что бы сработал SSL Handshake – “рукопожатие”, запрос должен пройти цепочку (“chain“) от сертификата сервера – до Root-сертификата Центра Сертификации (
CA - Certificate authority
). Примеры выполнения SSL Handshake есть в статье SSL: установка и примеры использования утилиты ssldump.В некоторых случаях, как в этом примере – между нашим сертифкатом и сертификатом нашего CA есть Intermediate, промежуточные, CA, и их сертификаты должны быть установлены в то же хранилище.
Просмотреть эту цепочку можно по полям Owner/Issuer сертификата. В примере выше мы видим, что и эмитент – EssentialSSL CA, а владелец – akira.setevoy.kiev.ua.
Что такое CA Root chain
Далее – найдём сертификат владельца нашего сертификата (Issuer: CN=EssentialSSL CA):
1
|
# keytool -printcert -file EssentialSSLCA_2.crt | grep CN |
2
|
Owner: CN=EssentialSSL CA, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB |
3
|
Issuer: CN=COMODO Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB |
Теперь – посмотрим сертификат для COMODO Certification Authority:
1
|
# keytool -printcert -file ComodoUTNSGCCA.crt | grep CN |
2
|
Owner: CN=COMODO Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB |
3
|
Issuer: CN=UTN — DATACorp SGC, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US |
Следующее звено цепочки – сертификат UTN — DATACorp SGC:
1
|
# keytool -printcert -file UTNAddTrustSGCCA.crt | grep CN |
2
|
Owner: CN=UTN — DATACorp SGC, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US |
3
|
Issuer: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE |
И последний сертификат в этой цепочке:
1
|
# keytool -printcert -file AddTrustExternalCARoot.crt | grep CN |
2
|
Owner: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE |
3
|
Issuer: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE |
4
|
[CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE] |
Тут и Owner и Issuer один и тот же, т.к. этот сертифкат являетс я “корневым” (Root).
Таким образом, цепочка выглядит так:
1
|
CN=akira.setevoy.kiev.ua > CN=EssentialSSL CA > CN=COMODO Certification Authority > CN=UTN — DATACorp SGC > CN=AddTrust External CA Root. |
Теперь – установим наш сертификат, в тоже хранилище, в котором лежит наш Private Key, из которого мы создавали наш .CSR файл.
Посмотрим, что в нём есть сейчас:
01
|
# keytool -list -keystore ../akiraCom.jks |
02
|
Enter keystore password: |
03
|
04
|
Keystore type: JKS |
05
|
Keystore provider: SUN |
06
|
07
|
Your keystore contains 1 entry |
08
|
09
|
akiracom, Jan 23, 2014, PrivateKeyEntry, |
10
|
Certificate fingerprint (MD5): 3E:69:6A:32:2F:14:EA:EE:94:74:FA:0F:18:6C:B0:F2 |
При попытке добавить свой сертификат “вне очереди” – будет сообщено об ошибке при проверки цепочки – “Failed to establish chain from reply“:
1
|
# keytool -import -v -trustcacerts -alias akiraCom -file akira_setevoy_kiev_ua.crt -keystore ../akiraCom.jks |
2
|
Enter keystore password: |
3
|
keytool error: java.lang.Exception: Failed to establish chain from reply |
4
|
java.lang.Exception: Failed to establish chain from reply |
Добавляем в хранилище CA Root сертификат:
1
|
# keytool -import -v -trustcacerts -alias AddTrustExternalCARoot -file AddTrustExternalCARoot.crt -keystore ../akiraCom.jks |
2
|
Enter keystore password: |
3
|
Certificate already exists in system-wide CA keystore under alias <addtrustexternalca> |
4
|
Do you still want to add it to your own keystore? [no]: yes |
5
|
Certificate was added to keystore |
6
|
[Storing ../akiraCom.jks] |
На вопрос "Certificate already exists in system-wide CA keystore under alias <addtrustexternalca>" – отвечаем Yes.
Проверим:
01
|
# keytool -list -keystore ../akiraCom.jks |
02
|
Enter keystore password: |
03
|
04
|
Keystore type: JKS |
05
|
Keystore provider: SUN |
06
|
07
|
Your keystore contains 2 entries |
08
|
09
|
akiracom, Jan 23, 2014, PrivateKeyEntry, |
10
|
Certificate fingerprint (MD5): 3E:69:6A:32:2F:14:EA:EE:94:74:FA:0F:18:6C:B0:F2 |
11
|
addtrustexternalcaroot, Jan 24, 2014, trustedCertEntry, |
12
|
Certificate fingerprint (MD5): 1D:35:54:04:85:78:B0:3F:42:42:4D:BF:20:73:0A:3F |
Добавляем второй сертификат:
1
|
# keytool -import -v -trustcacerts -alias UTNAddTrustSGCCA -file UTNAddTrustSGCCA.crt -keystore ../akiraCom.jks |
2
|
Enter keystore password: |
3
|
Certificate was added to keystore |
4
|
[Storing ../akiraCom.jks] |
Третий:
1
|
# keytool -import -v -trustcacerts -alias ComodoUTNSGCCA -file ComodoUTNSGCCA.crt -keystore ../akiraCom.jks |
2
|
Enter keystore password: |
3
|
Certificate was added to keystore |
4
|
[Storing ../akiraCom.jks] |
Четвёртый:
1
|
# keytool -import -v -trustcacerts -alias EssentialSSLCA_2 -file EssentialSSLCA_2.crt -keystore ../akiraCom.jks |
2
|
Enter keystore password: |
3
|
Certificate was added to keystore |
4
|
[Storing ../akiraCom.jks] |
И только теперь – свой. Обратите внимание – alias при добавлении должен быть тем же, которым “подписан” наш Private key, в данном случае – akiraCom:
1
|
# keytool -import -v -trustcacerts -alias akiraCom -file akira_setevoy_kiev_ua.crt -keystore ../akiraCom.jks |
2
|
Enter keystore password: |
3
|
Certificate reply was installed in keystore |
4
|
[Storing ../akiraCom.jks] |
Сообщение "Certificate reply was installed in keystore" говорит о том, что вся цепочка установлена нормально.
Осталось перенастроить сервер на использование этого хранилища, настройка описана в статье Tomcat: двухфакторная авторизация пользователей по SSL-сертификатам (за исключением обратной авторизации клиент>сервер ; сервер>клиент, само собой):
1
|
keystoreFile="/home/setevoy/.ssh/akiraCom.jks" |
2
|
keyAlias="akiraCom" |
1
|
# service tomcat6 start |
2
|
Starting tomcat60. |
Проверяем:
01
|
# curl https://akira.setevoy.kiev.ua:8443/ | head |
02
|
% Total % Received % Xferd Average Speed Time Time Time Current |
03
|
Dload Upload Total Spent Left Speed |
04
|
0 0 0 0 0 0 0 0 —:—:— —:—:— —:—:— 0<!— |
05
|
Licensed to the Apache Software Foundation (ASF) under one or more |
06
|
contributor license agreements. See the NOTICE file distributed with |
07
|
this work for additional information regarding copyright ownership. |
08
|
The ASF licenses this file to You under the Apache License, Version 2.0 |
09
|
(the "License"); you may not use this file except in compliance with |
10
|
the License. You may obtain a copy of the License at |
11
|
13
|
14
|
100 7917 100 7917 0 0 77452 0 —:—:— —:—:— —:—:— 77617 |
И заходим на сайт браузером:
Готово.
Похожие посты
-
01/22/2014 SSL: конвертировать файл .JKS в .PEM
-
07/23/2015 Apache HTTP: настройка HTTPS и SSL
-
09/10/2015 NGINX: настройка SSL и HTTPS
https://rtfm.co.ua/ssl-comodo-poluchenie-i-ustanovka-podpisannogo-ssl-sertifikata-ca-root-sertifikata-i-ssl-chain/
Губарь Маргарита Александровна недавно публиковал (посмотреть все)
- Как узнать IP-адрес по MAC-адресу - 07.04.2023
- Пинг проходит, а страницы в браузере не открываются - 07.04.2023
- Что если сайт пингуется «извне», но не открывается из под «локалки»? - 07.04.2023