How to Add a Root Certificate to the Java Truststore on Mac OS 10.15 Catalina

How to Add a Root Certificate to the Java Truststore on Mac OS 10.15 Catalina Техника

Web browsers and application runtimes, such as Java, have a special local
database of recognised Certificate
Authorities (CA). Each
time an SSL/TLS connection is made, that database is queried in order to
validate a server’s claimed identity (typically represented by its domain
name).

CertPathBuilderException: unable to find valid certification path to requested target

If your company has its own CA, or, if you want to make SSL/TLS connections to
a server in possession of a certificate issued by a CA which you recognise and
trust, but is not listed in the default Java trust store, you will need to
import the CA’s root certificate.

When developing a java web app on Mac OS Catalina, you may have a service that makes an API request to a secure URL.

If you don’t have that secure (https) URL’s root certificate in your Java truststore, the call will fail with this error:

: : :

The solution is to put that secure URL’s host’s root certificate into your Java truststore. Easier said than done, but here’s how to do it on Mac OS Catalina.

Download the Certificate

How to Add a Root Certificate to the Java Truststore on Mac OS 10.15 Catalina

Put the Certificate in your Java truststore

sudo keytool — -alias dstrootcax3 -keystore /Library/Java/JavaVirtualMachines/jdk1_77.jdk/Contents/Home/jre/lib/security/cacerts -file DSTRootCAX3.cer

Here is the command broken down so you can see where to replace strings with your values:

sudo keytool -import -alias -keystore -file

You’ll next be asked for the password to the truststore. If you have never changed the password, the password is “changeit”.

The uniqueAliasName should be a unique name within the truststore cert list that will let you recognize this particular cert, say, in case you want to remove it.

The pathToYourJavaInstallations_cacerts_file is the path to cacerts file you are using as a truststore. If your server is not using a custom cacerts file, this will be at the default location for your Java installation. If you are using the default Java installation that came with your Mac, like I am, it could be this path: /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre/lib/security/cacerts

The pathToCertYouJustDownloaded is the path to the cert you just put in your Finder folder.

If you’ve run the command successfully, you should see this message in your terminal: Certificate was added to keystore

Дополнительно:  Кулер ноутбука HP постоянно крутится | Сервисный центр HP

You can now restart your Java web server, and your API call should work.

Кто из нас не посещал ebay, amazon, чтобы купить что-нибудь, или его личный банковский счет, чтобы проверить это. Считаете ли вы, что эти сайты достаточно безопасны для размещения ваших личных данных, таких как (номер кредитной карты или номер банковского счета и т. Д.)?

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

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

SSL и как это работает

HTTP-соединение на основе HTTP всегда инициируется клиентом с использованием URL-адреса, начинающегося с https: // вместо http: //. В начале сеанса SSL выполняется рукопожатие SSL. Это рукопожатие производит криптографические параметры сеанса. Упрощенный обзор того, как обрабатывается рукопожатие SSL, показан на диаграмме ниже.

Вкратце, как это работает:

Мир SSL имеет, по сути, три типа сертификатов: закрытые ключи, открытые ключи (также называемые открытыми сертификатами или сертификатами сайта) и корневые сертификаты.

Частные ключи

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

Публичные сертификаты

Публичный сертификат (открытый ключ) — это та часть, которая предоставляется клиенту, ему нравится ваш личный паспорт, когда вы показываете его в аэропорту. Открытый сертификат, тесно связанный с закрытым ключом, создается из закрытого ключа с использованием запроса на подпись сертификата (CSR). После создания личного ключа вы создаете CSR, который отправляется в ваш центр сертификации (CA). CA возвращает подписанный сертификат, который содержит информацию об идентификации сервера и о CA.

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

Корневой сертификат CA — это сертификат CA, который представляет собой самозаверяющий сертификат. Этот сертификат представляет объект, который выдает сертификат и известен как Центр сертификации или CA, такой как VeriSign, Thawte и т. Д.

Центры сертификации

Компании, которые будут подписывать сертификаты для вас, такие как VeriSign, Thawte, Commodo, GetTrust. Кроме того, многие компании и учреждения действуют как свои собственные CA, либо создавая полную реализацию с нуля, либо используя опцию с открытым исходным кодом, такую ​​как OpenSSL.

Цепочка сертификатов

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

Если совпадение найдено, соединение продолжается. Если нет, веб-браузеры могут открыть диалоговое окно, предупреждая вас о том, что он не может доверять сертификату, и предлагая возможность доверять сертификату.

Keystore с использованием Java keytool

Java Keytool — это утилита управления ключами и сертификатами. Это позволяет пользователям управлять своими собственными парами открытого и закрытого ключей и сертификатами. Java Keytool хранит ключи и сертификаты в так называемом хранилище ключей . Защищает приватные ключи паролем.

Дополнительно:  Решение ошибки 0x0000003b в Windows 7 x64

Каждый сертификат в хранилище ключей Java связан с уникальным псевдонимом. При создании хранилища ключей Java вы сначала создадите файл .jks, который первоначально будет содержать только закрытый ключ, а затем создадите CSR. Затем вы импортируете сертификат в хранилище ключей, включая любые корневые сертификаты.

Команды хранилища ключей

Создание хранилища ключей, ключей и запросов сертификатов

Проверить / Список / Просмотр сертификатов

Настройте SSL, используя Keystores и самоподписанные сертификаты в Apache Tomcat.

Who of us didn’t visit ebay, amazon to buy anything or his personal bank account to check it. Do you think that those sites are secure enough to put your personal data like (credit card number or bank account number, etc.,)?

Most of those sites use the Socket Layer (SSL) protocol to secure their Internet applications. SSL allows the data from a client, such as a Web browser, to be encrypted prior to transmission so that someone trying to sniff the data is unable to decipher it.

Many Java application servers and Web servers support the use of keystores for SSL configuration. If you’re building secure Java programs, learning to build a keystore is the first step.

SSL and how it works

A HTTP-based SSL connection is always initiated by the client using a URL starting with https:// instead of with http://. At the beginning of an SSL session, an SSL handshake is performed. This handshake produces the cryptographic parameters of the session. A simplified overview of how the SSL handshake is processed is shown in the diagram below.

This is in short how it works:

The world of SSL has, essentially, three types of certificates: private keys, public keys (also called public certificates or site certificates), and root certificates.

Private Keys

The private key contains the identity information of the server, along with a key value. It should keep this key safe and protected by password because it’s used to negotiate the hash during the handshake. It can be used by someone to decrypt the traffic and get your personal information. It like leaving your house key in the door lock.

Public Certificates

The public certificate (public key) is the portion that is presented to a client, it likes your personal passport when you show in the Airport. The public certificate, tightly associated to the private key, is created from the private key using a Certificate Signing Request (CSR). After you create a private key, you create a CSR, which is sent to your Certificate Authority (CA). The CA returns a signed certificate, which has information about the server identity and about the CA.

Root Certificates

Root CA Certificate is a CA Certificate which is simply a Self-signed Certificate. This certificate represents a entity which issues certificate and is known as Certificate Authority or the CA such as VeriSign, Thawte, etc.

Дополнительно:  How to Fix iusb3xhc.sys BSOD -

Certificate Authorities

Companies who will sign certificates for you such as VeriSign, Thawte, Commodo, GetTrust. Also, many companies and institutions act as their own CA, either by building a complete implementation from scratch, or by using an open source option, such as OpenSSL.

Certificate Chain

When a server and client establish an SSL connection, a certificate is presented to the client; the client should determine whether to trust this certificate, a process called the certificate chain. The client examines the issuer of a certificate, searches its list of trusted root certificates, and compares the issuer on the presented certificate to the subjects of the trusted certificates.

If a match is found, the connection proceeds. If not, the Web browsers may pop up a dialog box, warning you that it cannot trust the certificate and offering the option to trust the certificate.

Keystore using Java keytool

Each certificate in a Java keystore is associated with a unique alias. When creating a Java keystore you will first create the .jks file that will initially only contain the private key, then generate a CSR. Then you will import the certificate to the keystore including any root certificates.

Keystore Commands

Create Keystore, Keys and Certificate Requests

Configure SSL using Keystores and Self Signed Certificates on Apache Tomcat

Ashraf Sarhan is a passionate software engineer, an open source enthusiast, has a Bsc. degree in Computer and Information Systems from Alexandria University. He is experienced in building large, scalable and distributed enterprise applications/service in multiple domains. He also has a keen interest in JavaEE, SOA, Agile and Big Data technologies.

Instructions for importing a CA root certificate into the JVM trust store

For StartCom the root certificate was made available at
http://www.startssl.com/certs/ca.pem, in PEM format. Certificates contain
public information and CAs always make them available for download.

Step 2. Convert the root certificate to DER format

This can be done with help of the openssl toolkit, where ca.pem is the
original certificate filename in PEM format, and ca.der the filename to
output, in DER format (which the Java keytool utility can understand). If you
were able to obtain the root certificate in DER format, skip this step.

openssl x509 -in ca.pem -inform pem -out ca.der -outform der

Step 3. Validate the root certificate content

Ensure that the Java keytool can parse the certificate and display its content:

keytool -v -printcert -file ca.der

Step 4. Import the root certificate into the JVM trust store

keytool -importcert -alias startssl -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file ca.der

(the default password for the CA store is changeit)

The keytool will prompt you for confirmation, enter yes to complete the
operation.

Step 5. Verify that the root certificate has been imported

To do that list the trust store content and filter for the certificate alias
(name) with grep:

You will now be able to make secure SSL/TLS connections to servers which have
a certificate signed by the CA which we just imported.

Оцените статью
Master Hi-technology
Добавить комментарий