Работа с SSL сертификатами, варианты создание сертификата

Главная › Unix ToolBox › SSL сертификаты

SSLSecure Socket Layer, криптографический протокол, использующий шифрование открытым ключем, для защиты передаваемых по сети данных. Протокол SSL, является важным элементом политики безопасности системы. SSL сертификат — электронный документ, используемый для подтверждения принадлежности транзакции тому или иному серверу и установления защищенного соединения между клиентом и сервером с шифрованием трафика. Часто используется на защищенных Веб серверах (https) или Mail серверах (imaps)

Процедура создания SSL сертификата

  • Клиент должен создать сертификат, со всеми необходимыми данными.
  • Отправить запрос на сертификацию в один из «центров сертификации» ( далее ЦС ). Так-же на данном этапе, беднт создан приватный ключ на локальной машине.
  • После обработки запроса, сертификат подписывается секретным ключем ЦС.
    Клиент имея публичный ключ ЦС, проверяет подлинность сертификата и далее может использовать его.
  • Если необходимо, можно объединить сертификат и ключ в один файл.

Конфигурация OpenSSL

В данном примере мы будем использовать директорию /usr/local/certs. Проверьте и отредактируйте файл /etc/ssl/openssl.cnf, согласно вашей конфигурации. Вот часть конфигурационного файла openssl.cnf, имеющая отношение к делу:

[ CA_default ]
dir             = /usr/local/certs/CA       # Где все хранить 
certs           = $dir/certs                # Где хранить сертификаты
crl_dir         = $dir/crl                  # Где хранить списки отзыва сертификатов (CRL)
database        = $dir/index.txt            # Индексный файл базы данных 

Убедитесь что директории существуют, иначе создайте их.

# mkdir -p /usr/local/certs/CA
# cd /usr/local/certs/CA
# mkdir certs crl newcerts private
# echo "01" > serial                        # Только если нет порядкового номера
# touch index. txt

Если вы собираетесь получать подписанный сертификат от какого-либо ЦС, вам нужно отправить запрос на сертификацию (CSR). После обработки запроса, сертификат будет подписан на определенный срок (например 1 год).

Создать сертификат полномочий

Если у вас нет сертификата, подписанного ЦС, и вы не планируете отправлять запрос на сертификацию, можно создать свой сертификат.

# openssl req -new -x509 -days 730 -config /etc/ssl/openssl.cnf -keyout CA/private/cakey.pem -out CA/cacert.pem

Запрос сертификации (CSR)

Если ваше приложение не поддерживает шифрование (например UW-IMAP), отключите его (шифрование), с помощью опции -nodes.

# openssl req -new -keyout newkey.pem -out newreq.pem \
-config /etc/ssl/openssl.cnf
# openssl req -nodes -new -keyout newkey.pem -out newreq.pem \
-config /etc/ssl/openssl.cnf                # Без шифрования ключа

Сохраните созданный запрос (newreq. pem), он может быть отправлен снова, для следующего обновления, подпись ограничивает срок действия сертификата. Кроме того, в процессе, будет создан приватный ключ newkey.pem.

Подпись сертификата

Подписанный ЦС сертификат является действующим. ниже, замените «servername» на имя своего сервера

# cat newreq.pem newkey.pem > new.pem
# openssl ca -policy policy_anything -out servernamecert.pem -config /etc/ssl/openssl.cnf -infiles new.pem
# mv newkey.pem servernamekey.pem

Ткперь servernamekey.pem — содержит приватный ключ а servernamecert.pem — сертификат сервера.

Создание объединенного сертификата

IMAP сервер желает иметь все приватные ключи и серверные сертификаты в одном файле, сделать это не сложно, но файл должен храниться в очень безопасном месте. Создадим файл servername.pem содержащий и сертификаты и ключи.

  • Открыть файл servernamekey.pem в текстовом редакторе и скопировать приватный ключ в файл
    servername.pem
    .
  • Тоже самое нужно проделать с сертификатом servernamecert.pem.

Окончательный вариант файла servername.pem, будет выглядеть примерно так:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDutWy+o/XZ/[...]qK5LqQgT3c9dU6fcR+WuSs6aejdEDDqBRQ
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIERzCCA7CgAwIBAgIBBDANB[...]iG9w0BAQQFADCBxTELMAkGA1UEBhMCREUx
-----END CERTIFICATE-----

Что у нас теперь есть в директории /usr/local/certs/:

  • CA/private/cakey.pem (CA приватный ключ)
  • CA/cacert.pem (CA публичный ключ)
  • certs/servernamekey.pem (приватный ключ сервера)
  • certs/servernamecert.pem (подписанный сертификат сервера)
  • certs/servername.pem (сертификат сервера и приватный ключ)
Приватный ключ в безопасном месте!

Просмотр информации о сертификате

# openssl x509 -text -in servernamecert. pem      # Посмотр информации о сертификате
# openssl req -noout -text -in server.csr        # Информация запроса
# openssl s_client -connect cb.vu:443            # Проверить сертификат Веб сервера

« Управление пакетами

Вверх

Конвертирование форматов »

tomcat — Как из текста создать PEM сертификат?

Вопрос задан

5 лет 6 месяцев назад

Изменён 5 лет 6 месяцев назад

Просмотрен 708 раз

Для HTTPS на Apache Tomcat 9 нашел инструкцию, в которой говорится, что нужно раскомментировать вот это:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
           maxThreads="150" SSLEnabled="true" >
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate certificateKeyFile="conf/localhost-rsa-key.
pem" certificateFile="conf/localhost-rsa-cert.pem" certificateChainFile="conf/localhost-rsa-chain.pem" type="RSA" /> </SSLHostConfig> </Connector>

Теперь, как я понимаю, нужно создать 3 файла .pem и поместить их в папку conf. У меня есть текст сертификата присланный на email

Ваш сертификат предоставлен ниже
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Корневой сертификат
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Промежуточный сертификат
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Запрос на получение сертификата
-----BEGIN CERTIFICATE REQUEST-----
...
-----END CERTIFICATE REQUEST-----
Сохраните приватный ключ на локальном компьютере.
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

Какой текст куда копировать? В localhost-rsa-key.pem беру то что между BEGIN RSA PRIVATE KEY и END RSA PRIVATE KEY. А в другие 2 что копировать?

UPD

localhost-rsa-cert.pem надо копировать из первого пункта.

А вот chain переводится как «цепочка», поэтому скопировал в него весь текст как есть, но пока не вышло ERR_SSL_PROTOCOL_ERROR

  • tomcat
  • ssl

4

Приватный ключ, используется в certificateKeyFile:

 -----BEGIN RSA PRIVATE KEY-----
   ...
 -----END RSA PRIVATE KEY-----

В certificateFile должен быть ваш конечный сертификат. Видимо, он первый в вашем списке.

certificateChainFile это файл цепочки сертификатов. Он создается склеиванием всех сертификатов в одном файле. Т.е. в вашем случае должно быть что-то подобное:

Корневой сертификат
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Промежуточный(-е) сертификат(-ы)
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Ваш конечный серификат
-----BEGIN CERTIFICATE-----
.
.. -----END CERTIFICATE-----

Грубо говоря, смысл цепочки сертификатов в том чтобы наложить какие-то ограничения на промежуточные сертификаты и, соответственно на их потомков. Т.е. корневой сертификат чист, а промежуточные устанавливают свои наследуемые «детьми-сертификатами» правила.

11

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Как создать файл .

pem для установки SSL-сертификата

Файлы SSL .pem (соединенные файлы контейнеров сертификатов) часто требуются для установки сертификатов, когда несколько сертификатов импортируются как один файл.

Эта статья содержит несколько наборов инструкций по различным сценариям создания файла .pem.

Создание файла .pem со всей цепочкой доверия SSL-сертификата

  1. Войдите в консоль управления DigiCert и загрузите промежуточный (DigiCertCA.crt), корневой (TrustedRoot.crt) и основной сертификаты (your_domain_name.crt).
  2. Откройте текстовый редактор (например, wordpad) и вставьте все тело каждого сертификата в один текстовый файл в следующем порядке:

    1. Основной сертификат — your_domain_name.crt
    2. Промежуточный сертификат — DigiCertCA. crt
    3. Корневой сертификат — TrustedRoot.crt

    Не забудьте включить начальный и конечный теги в каждый сертификат. Результат должен выглядеть так:

    ——НАЧАТЬ СЕРТИФИКАТ——
    (Ваш основной SSL-сертификат: your_domain_name.crt)
    ——КОНЕЦ СЕРТИФИКАТА——
    ——НАЧАТЬ СЕРТИФИКАТ——
    (Ваш промежуточный сертификат: DigiCertCA.crt)
    ——КОНЕЦ СЕРТИФИКАТА——
    —— НАЧАТЬ СЕРТИФИКАТ——
    (Ваш корневой сертификат: TrustedRoot.crt)
    ——КОНЕЦ СЕРТИФИКАТА——

    Сохраните объединенный файл как your_domain_name. pem . Теперь файл .pem готов к использованию.

Создание .pem с сервером и промежуточными сертификатами

  1. Войдите в консоль управления DigiCert и загрузите промежуточный (DigiCertCA.crt) и основной сертификаты (your_domain_name.crt).
  2. Откройте текстовый редактор (например, wordpad) и вставьте все тело каждого сертификата в один текстовый файл в следующем порядке:

    1. Основной сертификат — your_domain_name.crt
    2. Промежуточный сертификат — DigiCertCA.crt

    Не забудьте включить начальный и конечный теги в каждый сертификат. Результат должен выглядеть так:

    ——НАЧАТЬ СЕРТИФИКАТ——
    (Ваш основной SSL-сертификат: your_domain_name. crt)
    ——КОНЕЦ СЕРТИФИКАТА——
    —— НАЧАТЬ СЕРТИФИКАТ——
    (Ваш промежуточный сертификат: DigiCertCA.crt)
    ——КОНЕЦ СЕРТИФИКАТА——

    Сохраните объединенный файл как ваше_домен_имя.pem . Теперь файл .pem готов к использованию.

Создание .pem с закрытым ключом и всей цепочкой доверия

  1. Войдите в консоль управления DigiCert и загрузите промежуточный (DigiCertCA.crt) и основной сертификаты (your_domain_name.crt).
  2. Откройте текстовый редактор (например, wordpad) и вставьте все тело каждого сертификата в один текстовый файл в следующем порядке:

    1. Закрытый ключ — your_domain_name. key
    2. Основной сертификат — your_domain_name.crt
    3. Промежуточный сертификат — DigiCertCA.crt
    4. Корневой сертификат — TrustedRoot.crt

    Не забудьте включить начальный и конечный теги в каждый сертификат. Результат должен выглядеть так:

    ——НАЧАТЬ ЗАКРЫТЫЙ КЛЮЧ RSA——
    (Ваш закрытый ключ: your_domain_name.key)
    ——КОНЕЦ ЗАКРЫТОГО КЛЮЧА RSA——
    —— НАЧАТЬ СЕРТИФИКАТ——
    (Ваш основной SSL-сертификат: your_domain_name.crt)
    ——КОНЕЦ СЕРТИФИКАТА——
    —— НАЧАТЬ СЕРТИФИКАТ——
    (Ваш промежуточный сертификат: DigiCertCA. crt)
    ——КОНЕЦ СЕРТИФИКАТА——
    —— НАЧАТЬ СЕРТИФИКАТ——
    (Ваш корневой сертификат: TrustedRoot.crt)
    ——КОНЕЦ СЕРТИФИКАТА——

    Сохраните объединенный файл как your_domain_name.pem . Теперь файл .pem готов к использованию.

Связанные ссылки
  • Экспорт Apache/OpenSSL
  • Экспорт Exchange 2007
  • Импорт Java PFX
  • Экспорт Microsoft IIS 5/6
  • Экспорт Microsoft IIS 7
Сертификаты SSL
  • Продукты SSL
  • SSL Плюс
  • Сравнение сертификатов SSL
  • Подстановочные сертификаты
  • Сравнить SSL с подстановочными знаками
Поддержка SSL
  • Установка SSL для Mac OS X
  • Генерация CSR для Mac OS X
  • Утилита обновления сертификата SSL для IIS 6

apache 2.

2 — Как объединить различные сертификаты в один .pem

спросил

Изменено 6 лет, 8 месяцев назад

Просмотрено 187 тысяч раз

Я только что закончил читать эту замечательную тему, объясняющую различные форматы SSL.

Теперь я, по сути, ищу противоположное тому, как разделить файл PEM

Есть 4 файла, которые я хочу объединить, изначально созданные для Apache, я смотрю на файлы, указанные

  • SSLCertificateFile
  • SSLCertificateKeyFile
  • SSLCertificateChainFile
  • SSLCACertificateFile

Что меня больше всего интересует, так это порядок файлов в консолидированной производной, это важно? НАПРИМЕР. если бы я просто cat их вместе в том порядке, в котором они указаны выше, в . pem , будет ли это действительным, или они должны быть заказаны определенным образом?

К вашему сведению, я делаю это для того, чтобы использовать эти сертификаты как единый .pem в SimpleSAMLphp.

  • apache-2.2
  • ssl-сертификат
  • консолидация

3

Порядок имеет значение, согласно RFC 4346.

Вот цитата, взятая непосредственно из RFC:

 certificate_list
 Это последовательность (цепочка) сертификатов X.509v3. отправителя
 Сертификат должен стоять первым в списке. Каждый следующий
 Сертификат должен непосредственно удостоверять предыдущий. Потому что
 проверка сертификата требует распространения корневых ключей
 независимо самозаверяющий сертификат, указывающий корневой
 центр сертификации может быть не включен в цепочку,
 в предположении, что удаленный конец уже должен обладать им
 чтобы подтвердить это в любом случае.