Как настроить облачный сертификат Oracle? - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь подключиться к облаку оракула через Aws-java-sdk-s3-1.11.116.Когда я кодирую основной метод.каждая вещь работает хорошо.Но когда я положил метод для кота.это будет неправильно.Я не знаю почему.см кодпри выполнении основного метода верно следующее.

 public static void main(String[] args) {
    // TODO Auto-generated method stub
    AmazonS3 client  = getAwsClient2();
    List<Bucket> listRes = client.listBuckets();

    for(int i=0; i< listRes.size();i++)
    {
        System.out.println(listRes.get(i).getName());
    }

}

private static AmazonS3 getAwsClient2() {
    BasicAWSCredentials awsCreds = new BasicAWSCredentials("xxxxxxxxxxxxxxxx","xxxxxxxxxxxxxxxxxxxxxx");
    AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
            .withClientConfiguration(Init())
            .withPathStyleAccessEnabled(true)
            .withEndpointConfiguration(
                    new AwsClientBuilder.EndpointConfiguration("xxxx.compat.objectstorage.us-ashburn-1.oraclecloud.com", Region.getRegion(amzRegion).toString()))
            .build();

    return s3Client;
}

возврат верен.

16:18:47.776 [main] DEBUG com.amazonaws.requestId - AWS Request ID: 
975a50c6-a52b-c0e6-33b3-05d8d8ed44e5
FirstBucket
xxxxx-css-test
as-dev-xxxx-xxx-2dnav
as-dev-xxxx-xxprxxxxoxy-2dvxx
Process finished with exit code 0

Но когда я положил его в Tomcat.сертификат выдаст ошибку.

@GET
@Path("/users/testamazon")
public Response testAmazon() {
    AmazonClient.testGetowner();
    return Response.ok().build();
}

 //the method same as main method.
 public static void testGetowner(){
    AmazonS3 client  = getAwsClient2();
    List<Bucket> listRes = client.listBuckets();

    for(int i=0; i< listRes.size();i++)
    {
        System.out.println(listRes.get(i).getName());
    }
}

Когда я позвоню покоящему API./ users / testamazon

com.amazonaws.SdkClientException: Unable to execute HTTP request: Certificate for <xxxx.compat.objectstorage.us-ashburn-1.oraclecloud.com> doesn't match any of the subject alternative names: [swiftobjectstorage.us-ashburn-1.oraclecloud.com]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1069)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1035)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:742)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:716)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4187)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4134)

Я не знаю, почему, когда я вызываю метод из restful api, я получаю сертификат «swiftobjectstorage.us-ashburn-1.oraclecloud.com».Но когда я звоню из основного метода, сертификат «* .compat.objectstorage.us-ashburn-1.oraclecloud.com».Я отлаживаю код, цепочку сертификатов из AbstractVerifier.class

 @Override
public final boolean verify(final String host, final SSLSession session) {
    try {
        final Certificate[] certs = session.getPeerCertificates();
        final X509Certificate x509 = (X509Certificate) certs[0];

, когда я звоню из restful api.сертификаты неверны.это «swiftobjectstorage.us-ashburn-1.oraclecloud.com».

Я не знаю, почему поведение не такое.Нужно ли мне что-то настроить?

1 Ответ

1 голос
/ 19 марта 2019

Чтобы использовать конечные точки OCI Object Storage, ваш клиент должен поддерживать «Индикацию имени сервера» (SNI). Если клиент не поддерживает SNI, вы получите сертификат по умолчанию, который называется «swiftobjectstorage. [Region-identifier] .oraclecloud.com». Похоже, что здесь происходит.

В Java поддержка SNI имеет многочисленные предупреждения . Используете ли вы ту же версию Java в этих двух тестах?

...