не принял ваш логин или не предоставлен - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь отправить данные на сайт банка.Что я сделал:

  1. Я установил сертификат в Glassfish, который был выдан в другой домен, и использую его в localhost.
  2. Импортированный сертификат в склад доверенных сертификатов

Затем при отправке формы (POST) на сайт банка я получаю

didn’t accept your login certificate, or one may not have been provided. ERR_BAD_SSL_CLIENT_AUTH_CERT

У меня также естьпопытался загрузить файл .jks из кода и открыть sslSocket, затем использовать httpsUrlConnection для публикации данных.Этот метод работает в автономном режиме, но при использовании приложения throug, развернутого в Glassfish, он дает didn’t accept your login certificate, or one may not have been provided. ERR_BAD_SSL_CLIENT_AUTH_CERT

код, который я сделал:

 KeyStore ks = KeyStore.getInstance("JKS");
        ks.load(new FileInputStream("E://keystore.jks"), "asdf".toCharArray());

        Enumeration<String> en = ks.aliases();
        int n = 0;
        PrivateKey privKey = null;
        Certificate certificate = null;
        Certificate[] certificates = null;
        String alias = "";
        while (en.hasMoreElements()) {
            String aliasKey = en.nextElement();
            System.out.println("aliaskey " + aliasKey);

            alias = aliasKey;

            privKey = (PrivateKey) ks.getKey(aliasKey, "smart@123".toCharArray());
            System.out.println("privKey " + privKey);
            certificate = ks.getCertificate(aliasKey);
            System.out.println("certificate " + certificate);
            certificates = ks.getCertificateChain(aliasKey);
            System.out.println("certificates " + certificates);
            System.out.println("Provider " + ks.getProvider().getName());


            try {


                KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
                kmf.init(ks, "asdf".toCharArray());
                SSLContext sc = SSLContext.getInstance("TLS");
                sc.init(kmf.getKeyManagers(), null, null);

                SSLContext sslContext = null;
                sslContext = SSLContext.getInstance("TLS");
                sslContext.init(kmf.getKeyManagers(), null, null);


                String url = "https://example.com/form";
                URL urlObj = new URL(url);

                HttpsURLConnection conn = (HttpsURLConnection) urlObj.openConnection();
                if (conn instanceof HttpsURLConnection) {
                    ((HttpsURLConnection) conn).setSSLSocketFactory(sslContext.getSocketFactory());
                }

                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("POST");
                conn.setRequestProperty("Content-Type", "application/xml");
                conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
                conn.setDoInput(true);
                conn.setDoOutput(true);
                String payload = "datas";

                OutputStream output = new BufferedOutputStream(conn.getOutputStream());
                output.write(payload.getBytes());
                output.flush();


        }
...