【问题标题】:how to resolve Exception in thread "main" com.amazonaws.AmazonClientException: Unable to build cipher: Illegal key size using aws s3如何解决线程“主”com.amazonaws.AmazonClientException 中的异常:无法构建密码:使用 aws s3 的密钥大小非法
【发布时间】:2015-11-26 05:26:39
【问题描述】:

我正在尝试使用亚马逊 AWS 进行加密和解密。我遇到了异常

 Exception in thread "main" com.amazonaws.AmazonClientException: Unable to build cipher: Illegal key size
    Make sure you have the JCE unlimited strength policy files installed and configured for your JVM
        at  com.amazonaws.services.s3.internal.crypto.ContentCryptoScheme.createCipherLite(ContentCryptoScheme.java:190)
        at com.amazonaws.services.s3.internal.crypto.ContentCryptoMaterial.wrap(ContentCryptoMaterial.java:823)
        at com.amazonaws.services.s3.internal.crypto.S3CryptoModuleBase.buildContentCryptoMaterial(S3CryptoModuleBase.java:535)
        at com.amazonaws.services.s3.internal.crypto.S3CryptoModuleBase.newContentCryptoMaterial(S3CryptoModuleBase.java:483)
        at com.amazonaws.services.s3.internal.crypto.S3CryptoModuleBase.createContentCryptoMaterial(S3CryptoModuleBase.java:449)
        at com.amazonaws.services.s3.internal.crypto.S3CryptoModuleBase.putObjectUsingMetadata(S3CryptoModuleBase.java:165)
        at com.amazonaws.services.s3.internal.crypto.S3CryptoModuleBase.putObjectSecurely(S3CryptoModuleBase.java:159)
        at com.amazonaws.services.s3.internal.crypto.CryptoModuleDispatcher.putObjectSecurely(CryptoModuleDispatcher.java:107)
        at com.amazonaws.services.s3.AmazonS3EncryptionClient.putObject(AmazonS3EncryptionClient.java:485)
        at testKMSkeyUploadObject.main(testKMSkeyUploadObject.java:91)
    Caused by: java.security.InvalidKeyException: Illegal key size
        at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)
        at javax.crypto.Cipher.implInit(Cipher.java:805)
        at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
        at javax.crypto.Cipher.init(Cipher.java:1396)
        at javax.crypto.Cipher.init(Cipher.java:1327)
        at com.amazonaws.services.s3.internal.crypto.ContentCryptoScheme.createCipherLite(ContentCryptoScheme.java:187)
        ... 9 more

please help me.

当我尝试使用 AmazonS3EncryptionClient 放置对象进行加密时,我遇到了异常。如何解决此错误。

AmazonS3EncryptionClient s3 = new AmazonS3EncryptionClient(credentials,materialProvider);

PutObjectRequest putRequest = new PutObjectRequest(
                            bucket, kms_cmk_id, new ByteArrayInputStream(plaintext), metadata);

ObjectMetadata objectMetadata = new ObjectMetadata();
                    objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);   

putRequest.setMetadata(objectMetadata);
System.out.println(putRequest.getKey());
s3.putObject(putRequest); //getting exception here

【问题讨论】:

  • 请正确对齐您的代码。很难阅读。

标签: java amazon-web-services encryption amazon-s3


【解决方案1】:

似乎问题出在密钥大小上,而 IMO 亚马逊已在其代码中的某处对其进行了硬编码。解决方案可能是获取无限强度文件,您可以从以下位置下载:

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download

将文件安装到${java.home}/jre/lib/security/

【讨论】:

  • 我做了所有的事情。现在我在线程“main”com.amazonaws.services.s3.model.AmazonS3Exception 中遇到异常,例如:访问被拒绝(服务:Amazon S3;状态代码:403;错误代码:AccessDenied;请求 ID:428E4EC19BC3820D),跨度>
  • Access Denied有没有提到任何原因?
  • 我正确提供了所有访问凭据。我通过在 IAM 用户中创建加密密钥解决了该错误。现在我在线程“main”com.amazonaws.services.s3.model.AmazonS3Exception 中遇到异常,例如异常:禁止(服务:Amazon S3;状态代码:403;错误代码:403 禁止;请求 ID:null),S3 扩展请求 ID:空。如何解决这个异常?
【解决方案2】:

我通过在 IAM 管理控制台中创建加密密钥解决了这个问题。我在加密时使用了那个加密密钥。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2013-11-20
    • 2013-05-23
    • 2011-10-17
    • 2011-04-21
    相关资源
    最近更新 更多