Введение

SSL-сертификат — это уникальная цифровая подпись, которая однозначно указывает на определенный сайт в сети интернет. Также сертификат является частью системы шифрования и необходим для организации защищенного соединения между клиентом и сервером.

Сертификаты выпускаются двух видов:

  • Самозаверенный (самоподписанный) сертификат — создаётся самим субъектом, обычно им же и используется. Такой тип сертификатов не подписан удостоверяющими центрами.
  • Сертификат, выпущенный удостоверяющим центром — создаётся в виде цепочки корневого сертификата удостоверяющего центра, самого сертификата и возможных промежуточных сертификатов.

Удостоверяющий центр — организация, которая заявляет о своей честности, и, на основе своей честности, подтверждает подлинность ключа сертификата.

Обычно корневые сертификаты удостоверяющих центров широко известны и предустановлены производителем на устройства пользователей или в операционные системы.

Создание запроса на сертификат (CSR)

Создание закрытого ключа

bash-4.3$ openssl genrsa -out ~/cert.key 2048
Generating RSA private key, 2048 bit long modulus
..........................................................................................................................................+++
..+++
e is 65537 (0x10001)

Создание запроса

bash-4.3$ openssl req -new -sha256 -key ~/cert.key -out ~/cert.csr

При создании запроса необходимо дать ответы в диалоговых запросах

DN — поле Пояснение Пример
Common Name Полное доменное имя для вашего веб-сервера. Оно должно в точности совпадать. Если вы предполагаете использовать следующий URL: https://www.yourdomain.com, то «Common Name» должно быть www.yourdomain.com
Organization Точное наименование организации в соответствии с Уставом организации на английском языке. Не используйте сокращенное наименование организации. MyCompany Ltd.
Organization Unit Наименование отдела, подразделения (на английском языке). IT
City or Locality Город, где официально зарегистрирована организация (на английском языке). Moscow
State or Province Область, в которой официально зарегистрирована организация (на английском языке). Moscow
Country Страна, в виде двухсимвольного ISO-кода. Для России: RU. RU
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:RU
State or Province Name (full name) []:Moscow
Locality Name (eg, city) [Default City]:Moscow
Organization Name (eg, company) [Default Company Ltd]:Roga Ltd.
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:domain.com
Email Address []:info@domain.com

Пароль оставлять пустым

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

В сертификационный центр предоставляется только содержимое файла cert.csr

Пример созданных файлов

Закрытый ключ

bash-4.3$ cat ~/cert.key
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAylakszTwOBsBU26fazE2T717SMH/muzOEu69cZUi/C+aw+eR
wJD95y5LDnsu9fk5eUg/JQokcsTncgF8aJybokt72E8bIl1wSBTR3P4ADGtYvSkN
+P1C88J26GGX3P4cbTMTugi2Tb2xFi5I5aSdRuvsiGZuDAy3nF3kg5cajJG9rUVG
ZNNsLvh3lBdnIel3U0RYrZervtcvpEnhz8M5Rx+onaKnTMLp5PVkXEEjpSv6bXCf
iYVUPRtjY1SWibI0h+CrmRp52efIBqAsvA3IDK2dRGj0Bj56TzxKES8he0Ygk3qc
u6rztDGGMvvIWcBZUSdCR/E3KmbFjyzlFxEv2QIDAQABAoIBADB+YYzdxDD+L+wq
GCUdr1GfLRv7+uHLnXwmIdtGDhN46VPIfUM0vNWaX7zBwziKmb66lP+wlZm4HWxS
dNmxpw9Xnf/yvaMX1+A+tSmM6sAPPj5fx4yETnaTheId+cKqWG/HjRPKIL8zFm0l
fK0lLdiglJkAS6GxrpPYYPs0zNUhbzELh4hyEQ7rMvrX30mIHsLVMh27fxuK2VI3
6Tptv7/sErF0iwwROc5fnFnkYjrtNsNvnjPQvHgr7q8H+6OeFAZN/wQzIZZr1rjY
CKddLqznPGecVUhZrrRHiKohWF5yGrJHVe93EuQak216pnMuu8a7QVsOw8b+1DUJ
kQJozgECgYEA/HDpVGbQMm614q+zx1oJqfP8u+aQCdtwAfOLgZQ6K7kMqLlzP28u
D92M3TUrE2ynG1N/x4SAa+yMK0fgE2/LKlOWpH/hNVtJK2ys5AKzz39i5RZI0hQR
KAm7nodj3qnn7tnb5sE26qC5dH5tlckzZRKCuTvMyxANDecoIcHcHcECgYEAzTDn
6DasLv6IRodHR2uRwqo0WTSHeusD38hbOZ2vYk/2sgZkTWc3sRPSKaw7kGthGfX2
v/CQyuW/wiO5UDUkT8ayrMkZGQzZbjiag7fORq90dG4RlG58arxx55Ir1muPXUjd
3SnAUqDNPHzlGiLPXvnMJ85BSh/hzmlBxHU0SBkCgYBMkVrUVNL1WQsmFLDs2Gxx
9iVEQOyTcNGKZfp8dR8nv9sNGiLQrMJF4acmOUg1fhE5gpwRQilJktf5ELXwb0oq
LmxUvMzsSCHrX+0Yw5EScMroPVgdECUcBce4j8xE7zgABGhkl1o21EUsBmTqt7o0
/+ZSlMbLGLU88E4F3y0KgQKBgG8elAhCS16rwtsG+Yfo7ifQisbgVpovWYq/8v8x
sL/58+wW4Ay24AcKZ97fgeZE8HHhrL3nJlJqtz0IoZuZG9AEF9DQmsHhHoK9Lpg0
WwYWkGdZEDYk20XmRX0VwJ2+5AWtp1DVAmz83ghqzpsnzMtvVasc3Giq+VsRz2b3
3ddJAoGAcef0eCevT4GQR5kDjICXjKyNnVsWVDYl9dOaXFizxEL+4Nl7unppMeQI
cJnZcO5shoXd7PoVI5iByyK6aaMA9GLxAZcsbZJngkzF3u0uk4Ako7NM03iMxdaQ
FaJb1SnGcSWGwQKVqdBv5FGpCblISlk9DkVFKUB2PjQnp6xs0TQ=
-----END RSA PRIVATE KEY-----

Запрос CSR

bash-4.3$ cat ~/cert.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIDFzCCAf8CAQAwgdExCzAJBgNVBAYTAlJVMTEwLwYDVQQIDCjDkMKcw5DCvsOR
woHDkMK6w5DCvsOQwrLDkcKBw5DCusOQwrDDkcKPMSEwHwYDVQQHDBjDkMKcw5DC
vsORwoHDkMK6w5DCssOQwrAxNzA1BgNVBAoMLsOQwqDDkMK+w5DCs8OQwrAgw5DC
uCDDkMK6w5DCvsOQwr/DkcKLw5HCgsOQwrAxEzARBgNVBAMMCmRvbWFpbi5jb20x
HjAcBgkqhkiG9w0BCQEWD2luZm9AZG9tYWluLmNvbTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAMpWpLM08DgbAVNun2sxNk+9e0jB/5rszhLuvXGVIvwv
msPnkcCQ/ecuSw57LvX5OXlIPyUKJHLE53IBfGicm6JLe9hPGyJdcEgU0dz+AAxr
WL0pDfj9QvPCduhhl9z+HG0zE7oItk29sRYuSOWknUbr7IhmbgwMt5xd5IOXGoyR
va1FRmTTbC74d5QXZyHpd1NEWK2Xq77XL6RJ4c/DOUcfqJ2ip0zC6eT1ZFxBI6Ur
+m1wn4mFVD0bY2NUlomyNIfgq5kaednnyAagLLwNyAytnURo9AY+ek88ShEvIXtG
IJN6nLuq87QxhjL7yFnAWVEnQkfxNypmxY8s5RcRL9kCAwEAAaAAMA0GCSqGSIb3
DQEBCwUAA4IBAQCI+V1vbHu1KajJ6VHFq4+eDMjcdYPsazkQfYGASTb7vTpBuyMn
x00DMFxra+zMxL8zwMFAuoxtJiPut36nkRj5iCfpnZUK5W9Skq/jjum3bJ2mgTGa
nuJ23IXWJgrk+Tpr1F0/mVIjlHoNksQQy94gXZY2VgO/kQdxsc3yATqfQcCfzgeT
D/rvS0Fpl9b1Pb7b0abN3KbVkFRkMYR24oEmEN0k2Fk+Z+FtyWxBFLq1I/FX0qP6
wk++axH569n6VpztTXEICHqE+KE2nzFXqNWSMVrfJ2gBCXvIl6Qeb3t4cfVEHE6R
FBUamOn3bBzo7yC/i4Y0ksxM4oPHkdDmiduD
-----END CERTIFICATE REQUEST-----

Самозаверенный (самоподписанный) сертификат

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout ~/cert.key -out ~/cert.crt \
    -subj '/C=RU/ST=Moscow/L=Moscow/CN=JustHost'
  • ~/cert.key — закрытый ключ
  • ~/cert.crt — сертификат
  • days — указывает срок, на который будет выдан сертификат

Самозаверенная (самоподписанная) цепочка сертификатов

Корневой сертификат

openssl genrsa -out ~/ca.key 4096
openssl req -x509 -new -key ~/ca.key -days 3650 -out ~/ca.crt -subj '/C=RU/ST=Moscow/L=Moscow/CN=JustHost'

Сертификат сервера

openssl genrsa -out ~/server.key 4096
openssl req -new -key ~/server.key -days 3650 -out ~/server.crt -subj '/C=RU/ST=Moscow/L=Moscow/CN=server'
openssl x509 -req -days 3650 -in ~/server.crt -CA ~/ca.crt -CAkey ~/ca.key -set_serial 01 -out ~/server.crt

Сертификат клиента

openssl genrsa -out client.key 4096
openssl req -new -key ~/client.key -days 3650 -out ~/client.crt -subj '/C=RU/ST=Moscow/L=Moscow/CN=client'
openssl x509 -req -days 3650 -in ~/client.crt -CA ~/ca.crt -CAkey ~/ca.key -set_serial 01 -out ~/client.crt

Полезные команды

Посмотреть данные CSR

openssl req -noout -text -in ~/cert.csr

Добавить комментарий