Начнем с того, что сообщим вам, что я новичок ie в этом!
У меня есть два файла, которые мне дали, чтобы добавить в хранилище доверия, чтобы наше приложение Java могло поговорить с факсом. Один из них - api.fax.crt, а другой - api.fax.ca. Я добавил сертификаты на серверы следующим образом:
cd /etc/pki/ca-trust/source/anchors/
aws s3 cp s3://BlahBlah/temp/api.fax.ca .
aws s3 cp s3://BlahBlah/temp/api.faxa.crt .
sudo update-ca-trust
sudo service tomcat restart
Кажется, это работает, но иногда это занимает десять минут, а иногда - часы. Работая, я имею в виду, что он позволяет коду, использующему его, взаимодействовать с конечной факс-службой, которую я немного прочитал и обнаружил, что, вероятно, мне следует установить их в хранилище доверенных сертификатов JVM. Я попробовал следующее:
cd /usr/java/latest/lib/security/
aws s3 cp s3://BlahBlah/temp/api.fax.ca .
aws s3 cp s3://BlahBlah/temp/api.fax.crt .
sudo keytool -importcert -noprompt -trustcacerts -alias faxage -file api.fax.com.ca -keystore /usr/java/latest/lib/security/cacerts -storepass blahblah
sudo keytool -importcert -noprompt -trustcacerts -alias faxage2 -file api.fax.com.crt -keystore /usr/java/latest/lib/security/cacerts -storepass blahblah
sudo service tomcat restart
Делая это таким образом, я никогда не мог подключиться к службе факса.
Есть ли лучший способ? Должен ли я добавить это в местоположение Java или местоположение ca-trust? Должен ли я добавлять файлы ca и crt? Почему у меня может быть задержка, прежде чем она работает в первом примере? Спасибо всем за понимание !!!!
К вашему сведению - ошибки, которые я получаю, приведены ниже. Я посмотрел на эти ошибки, и нашел ответ: добавить сертификаты в хранилище ключей "/ usr / java / latest / lib / security / cacert" - которое я пробую, но оно не работает.
javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target<br>
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)<br>
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)<br>
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264)<br>
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:259)<br>
at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:642)<br>
at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:461)<br>
at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:361)<br>
at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392)<br>
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:450)<br>
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:427)<br>
at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:178)<br>
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)<br>
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152)<br>
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1063)<br>
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402)<br>
at java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:716)<br>
at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:970)<br>
at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)<br>
at java.base/java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)<br>
at java.base/java.io.FilterOutputStream.write(FilterOutputStream.java:108)<br>
at org.apache.commons.httpclient.methods.ByteArrayRequestEntity.writeRequest(ByteArrayRequestEntity.java:90)<br>
And many more........