Javax.net.ssl.SSLHandshakeException: (handshake_failure) Нет доступной схемы аутентификацииJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Javax.net.ssl.SSLHandshakeException: (handshake_failure) Нет доступной схемы аутентификации

Сообщение Anonymous »

Мое приложение использует внешний интерфейс React для отправки выборок на собственный внутренний сервер Java (на мой IP-адрес: 443) (Netbeans) на моей локальной MacOS. Все это прекрасно работает с http-запросами на моем локальном устройстве (localhost:3000 и порт 80), но пришло время запустить его с помощью A2hosting, который требует HTTPS-запросов.
Я зашел на сайт digicert.com и загрузил сертификаты как p7b, затем импортировал их в связку ключей Mac, а затем экспортировал в виде файлов .cer. Затем я вставил их в файлы проекта Netbeans, чтобы попытаться реализовать следующий код. У меня такое ощущение, что я «работаю в темноте» с SSL, и меня никогда не учили этой части. Пожалуйста, помогите!
Код, работающий с http-запросами:

Код: Выделить всё

   public class ServerRequests {

    public static final String CRLF = "\r\n";
    ServerSocket s;
    
    protected ServerSocket getServerSocket(int port) throws Exception{
        
        return new ServerSocket(port);  
    }

    public void runServer(int port) throws Exception{
        
        s = getServerSocket(port);
        
        while(true) {
            
            try {
                System.out.println("server is running");
                Socket us = s.accept();
                Handler(us);
                
                
            } catch (IOException e) {
                System.err.println(e);
            }
           }
        }
   
    
        public void Handler(Socket s) throws Exception, MessagingException {
Код, который не обрабатывает запросы HTTPS:

Код: Выделить всё

    protected ServerSocket getServerSocket(int port) throws Exception{
        
        return new ServerSocket(port);  
    }

     public void runServer(int port) throws Exception{
        
         char[] passphrase = "passphrase".toCharArray();
        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
        ks.load(null, passphrase);
        
        try (FileOutputStream fos = new FileOutputStream("kss.jks")) {
    ks.store(fos, passphrase);
}
    
      CertificateFactory cf = CertificateFactory.getInstance("X.509");
       X509Certificate[] chain = new X509Certificate[3];
       
       chain[0] = (X509Certificate) cf.generateCertificate(new FileInputStream("/Users/myname/Desktop/
NetBeansProjects/PHQForum/root.cer"));
     chain[1] = (X509Certificate) cf.generateCertificate(new FileInputStream("/Users/myname/Desktop/
NetBeansProjects/PHQForum/rs.cer"));
               chain[2] = (X509Certificate) cf.generateCertificate(new FileInputStream("/Users/myname/Desktop
/NetBeansProjects/PHQForum/phq.cer"));
     
        ks.setCertificateEntry(“myalias”, chain[0]);
        ks.setCertificateEntry("myalias", chain[1]);
        ks.setCertificateEntry("myalias", chain[2]);

         KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
        kmf.init(ks, passphrase);
        
           SSLContext sslContext = SSLContext.getInstance("TLSv1.1");
        sslContext.init(kmf.getKeyManagers(), null, null);
  
        SSLServerSocketFactory ssf = sslContext.getServerSocketFactory();
        
        SSLServerSocket serverSocket = (SSLServerSocket) ssf.createServerSocket(port);
 
        while(true) {
            
            try {
                System.out.println("server is running");
               SSLSocket us = (SSLSocket) serverSocket.accept();
                Handler(us);
                
                
            } catch (IOException e) {
                System.err.println(e);
            }
          }
         }
   
    
    public void Handler(SSLSocket s) throws Exception, MessagingException {
Я попробовал ввести «TLS» вместо «TLSv1.1», при этом не используя цепочку или x509Certificate, а только обычный сертификат.

Подробнее здесь: https://stackoverflow.com/questions/793 ... authentica
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»