Как обойти ошибку ssl Доверенный якорь для пути сертификации не найден

Обратите внимание, что мой SSL-сертификат выдан для сайта.com, а не www.website.com.

Это ваша основная проблема . Вы никогда не сможете перенаправлять с www до non www без действительного сертификата для www. Причина заключается в том, что соединение обрабатывается первым, прежде чем веб-сервер обрабатывает что-либо еще, включая любые правила перезаписи. Поэтому, когда ваш браузер подключается к вашему сайту с использованием протокола https, он должен проверить действительный сертификат, потому что это самый характер SSL, чтобы убедиться, что соединение безопасно. Затем, как только это будет сделано, Apache будет обрабатывать правила веб-сервера, которые у вас есть, как переписывание. Поэтому он не может переписываться с www на non www, пока соединение не будет выполнено правильно. Для этого вам также понадобится сертификат для www. Правила перезаписи не являются проблемой.

Этот вопрос возникает довольно часто, и его нет. Это характер SSL / шифрования и того, как он работает.

При покупке сертификата старайтесь не покупать только доменное имя, потому что некоторые ЦС предоставят вам это без www. Но если вы используете www.example.com в своей CSR, вы получите как www.example.com, так и example.com в том же сертификате в 99% случаев. Тогда вам не придется беспокоиться об этой проблеме. Они глупые дешевые, поэтому не должно быть проблемой, чтобы получить еще один. SSls.com имеет их для 4.99 / год.

0
задан mtdavem 8 February 2019 в 21:35
поделиться

1 ответ

Когда я получаю эту ошибку, я внедряю все сервисы, используя библиотеку для этой проблемы. Попробуйте, может быть, это поможет вам. @ Mtdavem

public class ServiceGenerator {

   public static String PREF_COOKIES = "pref_cookies";
   private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
   private static Retrofit.Builder builder;

   public static <S> S createService(Class<S> serviceClass) {
    return createService(serviceClass, null);
   }

   public static <S> S createService(Class<S> serviceClass, final HashMap<String, String> headers) {

      builder = new Retrofit.Builder()
            .baseUrl("your service address")
            .addConverterFactory(GsonConverterFactory.create());

      httpClient.sslSocketFactory(getSSLSocketFactory());
      httpClient.hostnameVerifier(new HostnameVerifier() {

         @Override
         public boolean verify(String hostname, SSLSession session) {
            return true;
         }
       });

     OkHttpClient client = httpClient.build();
     Retrofit retrofit = builder.client(client).build();
     return retrofit.create(serviceClass);
   }

   private static SSLSocketFactory getSSLSocketFactory() {

      try {
          // Create a trust manager that does not validate certificate chains
          final TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                    }

                    @Override
                    public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                    }

                    @Override
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return new java.security.cert.X509Certificate[]{};
                    }
                }
         };

        // Install the all-trusting trust manager
        final SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
        // Create an ssl socket factory with our all-trusting manager
        final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

        return sslSocketFactory;
      } catch (KeyManagementException | NoSuchAlgorithmException e) {
          return null;
     }

   }
}
0
ответ дан Rohit Singh 8 February 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: