74장. 암호화 CMS 구성 요소
Camel 버전 2.20에서 사용 가능
CMS(Cryptographic Message Syntax) 는 메시지 서명 및 암호화에 적합한 표준입니다. ApacheECDHE CMS 구성 요소는 이 표준의 다음 부분을 지원합니다. * * Key Transport (asymmetric key)를 사용하여 콘텐츠 유형 "Enveloped Data", * 콘텐츠 유형 "Signed Data"를 사용합니다. CMS Enveloped Data 인스턴스를 생성하고, CMS Enveloped Data 인스턴스를 해독하고, CMS 서명 데이터 인스턴스를 생성하고, CMS 서명 데이터 인스턴스를 검증할 수 있습니다.
구성 요소는 Bouncy Castle 라이브러리 bcprov-jdk18on 및 bcpkix-jdk18on을 사용합니다.
Maven 사용자는 이 구성 요소의 pom.xml
에 다음 종속성을 추가해야 합니다.
이 구성 요소의 끝점을 호출하기 전에 애플리케이션에 Bouncy Castle 보안 공급자를 등록하는 것이 좋습니다.
Security.addProvider(new BouncyCastleProvider());
Security.addProvider(new BouncyCastleProvider());
Bouncy Castle 보안 공급자가 등록되지 않은 경우ECDHE CMS 구성 요소가 공급자를 등록합니다.
74.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
4.6.1 CMS 구성 요소는 아래에 나열된 3 가지 옵션을 지원합니다.
이름 | 설명 | Default | 유형 |
---|---|---|---|
signedDataVerifier 구성 (advanced) | 확인 작업에 대한 uri 매개변수를 결정하는 공유 SignedDataVerifierConfiguration을 구성하려면 다음을 수행합니다. | SignedDataVerifier 구성 | |
dvancedDataDecryptor 설정 (advanced) | 암호 해독 작업에 대한 uri 매개변수를 결정하는 공유 EnvelopedDataDecryptorConfiguration을 구성하려면 다음을 수행합니다. | EnvelopedDataDecryptor Configuration | |
resolvePropertyECDHEholders (advanced) | 구성 요소가 시작할 때 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
ECDHE CMS 끝점은 URI 구문을 사용하여 구성됩니다.
crypto-cms:cryptoOperation:name
crypto-cms:cryptoOperation:name
다음 경로 및 쿼리 매개변수를 사용합니다.
74.1.1. 경로 매개변수 (2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
이름 | 설명 | Default | 유형 |
---|---|---|---|
cryptoOperation | 필수 엔드 포인트 uri의 암호화 체계 이후에 제공 된에서ECDHE 작업 (예: crypto-cms:sign sets) 작업으로 서명합니다. 가능한 값은 sign, verify, encrypt 또는 decrypt입니다. | ECDHEOperation | |
name | 필수 URI의 이름 부분은 사용자가 camel 컨텍스트 내에서 다른 서명자/verifier/encryptor/decryptor 끝점을 구분하도록 선택할 수 있습니다. | 문자열 |
74.1.2. 쿼리 매개변수(15 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
이름 | 설명 | Default | 유형 |
---|---|---|---|
keyStore (common) | 서명자 개인 키, 검증기 공개 키, 암호화 키, 작업에 따라 개인 키 암호 해독이 포함된 키 저장소입니다. 이 매개변수 또는 'keyStoreParameters' 매개변수를 사용합니다. | KeyStore | |
keyStoreParameters (common) | 서명자 개인 키, 검증기 공개 키, 암호화 키, 작업에 따라 개인 키 암호 해독이 포함된 키 저장소입니다. 이 매개변수 또는 'keystore' 매개변수를 사용합니다. | KeyStoreParameters | |
동기 (고급) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리(지원되는 경우)를 사용할 수 있는지 여부를 설정합니다. | false | boolean |
비밀번호(암호 해독) | 개인 키의 암호를 설정합니다. 키 저장소에 있는 모든 개인 키의 암호가 동일합니다. 설정하지 않으면 KeyStoreParameters에 지정된 키 저장소 암호에서 개인 키의 암호가 제공되는 것으로 가정합니다. | Char[] | |
Base64 (decrypt_verify) | true인 경우 CMS 메시지는 기본 64로 인코딩되며 처리 중에 디코딩해야 합니다. 기본값은 false입니다. | false | 부울 |
contentEncryptionAlgorithm (encrypt) | 암호화 알고리즘(예: DESede/CBC/PKCS5Padding) 가능한 추가 값: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding | 문자열 | |
originatorECDHE Provider (암호화) | 발신자 정보에 대한 공급자입니다. https://tools.ietf.org/html/rfc5652#section-6.1 을 참조하십시오. 기본값은 null입니다. | OriginatorECDHE 공급자 | |
수신자 (암호화) | 수신자 정보: 인터페이스 org.apache.camel.component.crypto.cms.api.TransRecipientInfo를 구현하는 DestinationRule에 대한 참조 | list | |
secretKeyLength (암호화) | 콘텐츠 암호화에 사용되는 시크릿 대칭 키의 키 길이입니다. 지정된 콘텐츠 암호화 알고리즘에서 다른 크기의 키를 허용하는 경우에만 사용됩니다. contentEncryptionAlgorithm=AES/CBC/PKCS5Padding 또는 Camellia/PKCS5Padding 다음 128; contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding인 경우, AES에 대해 강력한 암호화가 활성화된 경우 128 /CBC/PKCS5Padding 및 Camellia/CBC/PKCS5Padding도 키 길이 192 및 256을 사용할 수 있습니다. | int | |
보호되지 않은Attributes generatorProvider (암호화) | 보호되지 않은 특성을 위한 생성기 공급자입니다. 기본값은 null이므로 보호되지 않은 속성이 Enveloped Data 오브젝트에 추가되지 않음을 의미합니다. https://tools.ietf.org/html/rfc5652#section-6.1 을 참조하십시오. | AttributesGenerator 공급자 | |
toBase64 (encrypt_sign) | 서명된 데이터 또는 Enveloped Data 인스턴스가 64로 인코딩되어야 하는지 여부를 나타냅니다. 기본값은 false입니다. | false | 부울 |
includeContent (sign) | 서명된 콘텐츠를 서명된 데이터 인스턴스에 포함할지 여부를 나타냅니다. false인 경우 서명된 분리된 데이터 인스턴스가 CamelCryptoCmsSignedData 헤더에 생성됩니다. | true | 부울 |
서명자( signer ) | 서명자 정보: org.apache.camel.component.crypto.cms.api.SignerInfo를 구현하는ECDHE에 대한 참조 | list | |
signedDataHeaderBase64 (verify) | CamelCryptoCmsSignedData 헤더의 값이 base64 인코딩인지 여부를 나타냅니다. 기본값은 false입니다. 분리된 서명에만 관련이 있습니다. 분리된 서명 케이스에서 헤더에는 서명 데이터 오브젝트가 포함됩니다. | false | 부울 |
verifySignaturesOfAll Signers (verify) | true인 경우 서명된 데이터 개체에 포함된 모든 서명자의 서명이 확인됩니다. false인 경우 서명자 정보가 지정된 인증서 중 하나와 일치하는 서명이 확인됩니다. 기본값은 true입니다. | true | 부울 |