Я пытаюсь использовать AWS S3 SDK для Java для подключения к корзине из модуля Kubernetes, на котором запущено приложение Spring Boot. Чтобы получить внешний доступ, мне нужно было создать службу следующим образом:
kind: Service
apiVersion: v1
metadata:
name: s3
namespace: production
spec:
type: ExternalName
externalName: nyc3.digitaloceanspaces.com
И затем я изменил свою конфигурацию в application.properties
, указав конечную точку:
cloud.aws.endpoint=s3
cloud.aws.credentials.accessKey=ASD
cloud.aws.credentials.secretKey=123
cloud.aws.credentials.instanceProfile=true
cloud.aws.credentials.useDefaultAwsCredentialsChain=true
Поскольку SDK строит имя хоста для сегмента как bucket.s3...
Я изменил свой клиент для использования доступа «стиль пути» с этой конфигурацией:
@Bean(name = "amazonS3")
public AmazonS3Client amazonS3Client(AWSCredentialsProvider credentialsProvider,
RegionProvider regionProvider) {
EndpointConfiguration endpointConfiguration = new EndpointConfiguration(
endpoint, regionProvider.getRegion().getName());
return (AmazonS3Client) AmazonS3ClientBuilder.standard()
.withCredentials(credentialsProvider)
.withEndpointConfiguration(endpointConfiguration)
.withPathStyleAccessEnabled(true)
.build();
}
Но когда я пытаюсь выполнить какую-либо операцию сегмента, я получаю следующую ошибку относительно несоответствие имени сертификату SSL:
javax.net.ssl.SSLPeerUnverifiedException: Certificate for <s3> doesn't match any of the subject alternative names: [*.nyc3.digitaloceanspaces.com, nyc3.digitaloceanspaces.com]
Как можно избежать этой ошибки сертификата?