Введение
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