Рубрики
Без рубрики

Цифровой сертификат: Как импортировать файл .cer в файл Truststore

Узнайте о нескольких инструментах, которые мы можем использовать для импорта сертификатов в формате .cer в хранилище доверия клиента

Автор оригинала: baeldung.

1. Обзор

Протокол SSL обычно является предпочтительным выбором, когда приложениям необходимо взаимодействовать с клиентами по сети. Вместе с шифрованием данных SSL делает обязательным для приложения, такого как браузер, обмен асимметричными ключами во время рукопожатия, чтобы установить безопасное соединение.

Как правило, приложения совместно используют асимметричные ключи в формате X. 509 сертификатов . Поэтому перед обменом SSL-квитированием клиенты должны импортировать такие сертификаты в свои файлы truststore.

В этой статье мы обсудим несколько инструментов, которые мы можем использовать для импорта сертификатов в формате .cer в хранилище доверия клиента.

2. Команда keytool

Дистрибутив JDK предоставляет утилиту keytool, которую мы можем использовать для управления хранилищами ключей Java (JKS) . Наиболее важной целью этой команды является создание самозаверяющих сертификатов X. 509 для тестирования SSL-связи между клиентом и сервером.

Мы также можем импортировать самозаверяющие или подписанные CA сертификаты в файл JKS и использовать его в качестве хранилища доверия :

keytool -importcert -alias trustme -file baeldung.cer -keystore cacerts

Enter keystore password:

Trust this certificate? [no]:  yes
Certificate was added to keystore

Здесь мы импортировали самозаверяющий сертификат baeldung.cer с помощью команды keytool . Мы можем импортировать этот сертификат в любое хранилище ключей Java. Например, тот, который показан здесь, добавляет сертификат в хранилище ключей cacerts в JDK .

Если мы теперь перечислим сертификаты в хранилище ключей, мы увидим псевдоним поверьте мне :

keytool -list -keystore cacerts

trustme, Oct 31, 2020, trustedCertEntry,
Certificate fingerprint (SHA1): 04:40:6C:B0:06:65:EE:80:9A:90:A5:E9:DA:19:05:4A:AA:F2:CF:A4

3. Команда openssl

До сих пор мы обсуждали только импорт сертификатов в файл JKS. Такие хранилища ключей можно использовать только с приложениями Java . Если нам нужно реализовать библиотеку SSL на других языках или использовать один и тот же сертификат на нескольких языковых платформах, мы с большей вероятностью будем использовать хранилища ключей PKCS12 .

Для импорта сертификата в хранилище ключей PKCS12 мы также можем использовать openssl :

openssl pkcs12 -export -in baeldung.cer -inkey baeldung.key -out baeldung.keystore -name trustme

Эта команда импортирует сертификат с именем baeldung.cer в хранилище ключей baeldung.keystore с псевдонимом trust me.

Мы можем увидеть импортированный сертификат в хранилище ключей:

openssl pkcs12 -info -in baeldung.keystore
Enter Import Password:
MAC: sha1, Iteration 2048
MAC length: 20, salt length: 8
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
    friendlyName: trustme
    localKeyID: F4 36 4E 19 E4 E4 E7 65 74 56 FB 50 40 02 68 8B EC F0 4D B3
subject=C = IN, ST = DE, L = DC, O = BA, OU = AU, CN = baeldung.com

issuer=C = IN, ST = DE, L = DC, O = BA, OU = AU, CN = baeldung.com

-----BEGIN CERTIFICATE-----
MIIFkTCCA3mgAwIBAgIUL/OjGExnppeZkiNNh0i2+TPHaCQwDQYJKoZIhvcNAQEL
BQAwWDELMAkGA1UEBhMCSU4xCzAJBgNVBAgMAkRFMQswCQYDVQQHDAJEQzELMAkG
A1UECgwCQkExCzAJBgNVBAsMAkFVMRUwEwYDVQQDDAxiYWVsZHVuZy5jb20wHhcN
MjAxMTAzMTIwMjI5WhcNMjExMTAzMTIwMjI5WjBYMQswCQYDVQQGEwJJTjELMAkG
A1UECAwCREUxCzAJBgNVBAcMAkRDMQswCQYDVQQKDAJCQTELMAkGA1UECwwCQVUx
FTATBgNVBAMMDGJhZWxkdW5nLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBAK/XF/xmqQRJlTx2Vtq70x1KFwkHJEcZOyFbQP7O9RgicvMTAnbZtKpS
BSVjwroklIr4OVK4wmwdaTnlIm22CsFrbn+iBVL00tVs+sBYEcgO5nphVWGFbvHl
Q3PO4vTedSyH1qIyYrrhAn8wYvzdmr2g6tRwBX8K5H948Zb32Xbp5r9aR5M2i8Qz
fc0QasJUM5b71TNt8Qcsru3pFKj5hUMBTNrGCQrr6vrADTcG0YHuVSMeJId7f67h
l0vEY0BmRPnWNwGe+Sg/jqOWH9WWvkk/umkEQNWCQZaXZNZZ8jl5WMKFnmA7sPQ+
UjZPabNOTxhz6fJv5nJu7aMS/6tUWO0SdQ+ctO3HgR42wtBPoEOOuFMP6OqHI4hf
CXFTYg6aLwxFJP7LngfRvETgzVlsb9L/m++JBeoWRqpWaQUEgxDYJGFGA5dwQJaf
f24d042i44X0WqBBoWLjSQd/JFVH5MF17waiYpxFBOgpz3XEM/1j+juJPVut2k96
3ecgR54iKILbibizPUojn7t3AFT1Ug8exdefHdf+QsL8/L5+8/xOYkp/pnglQJJl
W0Lq4Sh9LWiux9XVdY6n2UYf/crgLSHatVkPa26cysdXhiiEPn4yYr2AdYVf0Xr5
W5PULufdi0HW2Eja/TfeXoBQtkdidqP8SMW+DwqafX80s37bZZBvAgMBAAGjUzBR
MB0GA1UdDgQWBBQPHIpCFhAy3kGAbzHpXMjXCMVQRzAfBgNVHSMEGDAWgBQPHIpC
FhAy3kGAbzHpXMjXCMVQRzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUA
A4ICAQBzOK52I7lDX+7CHy6cQ8PnLZjAD4S5qC1P9dMy50E9N6Tmw2TiPbWl9CnU
7a/kVO6xDJDmNMnqRbHmlZclJaTFv6naXSX27PdIWjhwAfLjNa+FO9JNwMgiP25I
ISVjyrA3HwbhFnMs5FyBW9hbxfQ+X2Q2ooa+J3TKU7FImuDRKF3Sdb63+/j0go8S
5/TsoYpQxg86xbWf6IYGYwegd2SPSWUZ0HQSobZ7fRA7Y0EyPKgyqsBbmDtJ+X1g
P8Kep4N1oocc7ZkkX4pNfXTgXib9fUkKMAfRJz8w62z8I1OM61bciW7V2VSp/Y5p
iTihyuwO0aHG+YTnsr3qFrSFQLQUjCeBvx+euQelsGm8W9xM9YfASXiaEwCmb9PO
i/umD70J1e0HFDay9FW6mMoCCEBTZIF9ARqzhHgg9fi9iH2ctrsxadFAlOTFp5+/
p+nxrencfvc4CP6aHoqkE45HpMBoNDAxRMVd/FRzIG2as0q5At873MNFXP6WxmQV
4KGIhteNLyrXk82yHdHfm1EENTI7OEst/Fc8O3fFy9wn0OvoHIuCv1FVCq4Gnjmq
vNnBnGldrYruCNvj5KT6U14FFdK/5Zng0nSky4oMTs49zt392bdYi31SHWeATdw/
PscFRdig2stoI8ku6R+K7XvmseGzPmUW4K2IWU0zdRP2a4YyvA==
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Bag Attributes
    friendlyName: trustme
    localKeyID: F4 36 4E 19 E4 E4 E7 65 74 56 FB 50 40 02 68 8B EC F0 4D B3
Key Attributes: 

Итак, мы успешно импортировали ваш сертификат в хранилище ключей PKCS12. В результате это хранилище ключей теперь можно использовать в качестве файла хранилища доверия в клиентских приложениях SSL, таких как клиентские библиотеки HTTP . Аналогично, этот файл также можно использовать в качестве хранилища ключей в приложениях SSL-сервера, таких как Tomcat .

4. Заключение

В этой статье мы обсудили два популярных инструмента SSL для управления цифровыми сертификатами — OpenSSL и Java Keytool. Далее мы использовали команды keytool и openssl для импорта сертификата в формате .cer в файлы JKS и PKCS12 соответственно .