SSL: Comodo – получение и установка подписанного SSL-сертификата, CA Root сертификата и SSL-chain | …


0

SSL: Comodo – получение и установка подписанного SSL-сертификата, CA Root сертификата и SSL-chain

Rate this (2 Votes)
В примере будем использовать бесплатный SSL-сертификат от Comodo, получить его можно тут>>>.
Процедура заказа и установки платного (коммерческого) сертификата – практически та же самая, не считая деталей при оформлении заказа.

Создание 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——

Заказ SSL-сертификата у Certificate Authority (CA)

Переходим на страницу оформления заказа на сертификат, кликаем на Большую Зелёную Кнопку 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 и самого сертификата для сервера.
Можно загрузить архив с сайта https://secure.comodo.net/products/frontpage:

Установка 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.
Проверяем:
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
И заходим на сайт браузером:
Готово.
Есть удобные веб-сервисы для проверки SSL-chain, например – тут>>>:

https://rtfm.co.ua/ssl-comodo-poluchenie-i-ustanovka-podpisannogo-ssl-sertifikata-ca-root-sertifikata-i-ssl-chain/

Губарь Маргарита Александровна