75장. 암호화 CMS 구성 요소
Camel 버전 2.20에서 사용 가능
CMS(Cryptographic Message Syntax) 는 메시지에 서명하고 암호화하기 위한 잘 설정된 표준입니다. Apache Crypto CMS 구성 요소는 이 표준의 다음 부분을 지원합니다. * Content Type "Enveloped Data" with Key Transport (asymmetric key), * 콘텐츠 유형 "로그인 데이터". CMS Enveloped Data 인스턴스를 생성하고, CMS 인코딩 데이터 인스턴스를 암호 해독하고, CMS 서명 데이터 인스턴스를 만들고, CMS 서명 데이터 인스턴스를 검증할 수 있습니다.
이 구성 요소는 Bouncy Castle 라이브러리 bcprov-jdk18on 및 bcpkix-jdk18on을 사용합니다.
Maven 사용자는 이 구성 요소에 대해 pom.xml
에 다음 종속성을 추가해야 합니다.
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-crypto-cms</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
이 구성 요소의 끝점을 호출하기 전에 애플리케이션에 Bouncy Castle 보안 공급자를 등록하는 것이 좋습니다.
Security.addProvider(new BouncyCastleProvider());
Bouncy Castle 보안 공급자가 등록되지 않은 경우 Crypto CMS 구성 요소가 공급자를 등록합니다.
75.1. 옵션
Crypto CMS 구성 요소는 아래에 나열된 세 가지 옵션을 지원합니다.
이름 | 설명 | 기본 | 유형 |
---|---|---|---|
signedDataVerifier 구성 (고급) | 확인 작업에 대한 uri 매개변수를 결정하는 공유 SignedDataVerifierConfiguration을 구성하려면 다음을 수행합니다. | SignedDataVerifier 구성 | |
envancedDataDecryptor 구성 (고급) | 암호 해독 작업의 uri 매개변수를 결정하는 공유 EnvelopedDataDecryptorConfiguration을 구성하려면 다음을 수행합니다. | EnvelopedDataDecryptor 구성 | |
resolveProperty Placeholders (advanced) | 구성 요소 시작 시 속성 자리 표시자를 자체적으로 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다. | true | boolean |
Crypto CMS 끝점은 URI 구문을 사용하여 구성됩니다.
crypto-cms:cryptoOperation:name
다음 경로 및 쿼리 매개변수를 사용합니다.
75.1.1. 경로 매개변수 (2 매개변수):
이름 | 설명 | 기본 | 유형 |
---|---|---|---|
cryptoOperation | 필수 입력 사항에서 끝점 uri의 암호화 스키마 이후에 제공된 Crypto 작업을 설정합니다(예: crypto-cms:sign sets sign as the operation). 가능한 값: 기호, 확인, 암호화 또는 암호 해독입니다. | CryptoOperation | |
name | 필수 URI의 이름 부분은 사용자가 카멜 컨텍스트 내의 다양한 서명자/확인자/암호화기/암호화자 끝점을 구분하기 위해 선택할 수 있습니다. | 문자열 |
75.1.2. 쿼리 매개변수(15 매개변수):
이름 | 설명 | 기본 | 유형 |
---|---|---|---|
키 저장소 (공용) | 서명자 개인 키를 포함하는 키 저장소, 검증기 공개 키, 암호화자 공개 키, 작업에 따라 암호 해독기 개인 키입니다. 이 매개변수 또는 'keyStoreParameters' 매개변수를 사용합니다. | KeyStore | |
keyStoreParameters (공용) | 서명자 개인 키, 확인자 공개 키, 암호화기 공개 키, 작업에 따라 암호 해독기 개인 키가 포함된 키 저장소입니다. 이 매개변수 또는 'keystore' 매개변수를 사용합니다. | KeyStoreParameters | |
동기 (고급) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
암호 (decrypt) | 개인 키의 암호를 설정합니다. 키 저장소의 모든 개인 키의 암호는 동일한 것으로 가정합니다. 설정되지 않은 경우 개인 키의 암호는 KeyStoreParameters에 지정된 키 저장소 암호로 제공되는 것으로 간주됩니다. | Char[] | |
fromBase64 (decrypt_verify) | true인 경우 CMS 메시지는 기본 64로 인코딩되며 처리 중에 디코딩해야 합니다. 기본값은 false입니다. | false | 부울 |
contentEncryptionAlgorithm (encrypt) | 암호화 알고리즘(예: DESede/CBC/PKCS5Padding). 추가 가능한 값: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding. | 문자열 | |
originator Cryostat 공급자 (암호화) | 오리케이터 정보 공급자입니다. https://tools.ietf.org/html/rfc5652#section-6.1 을 참조하십시오. 기본값은 null입니다. | Originator Cryostat 공급자 | |
수신자 (암호화) | 수신자 정보: org.apache.camel.component.crypto.cms.api.TransRecipientInfo 인터페이스를 구현하는 useful에 대한 참조 | list | |
secretKeyLength (encrypt) | 콘텐츠 암호화에 사용되는 시크릿 대칭 키의 키 길이입니다. 지정된 콘텐츠 암호화 알고리즘에서 다양한 크기의 키를 허용하는 경우에만 사용됩니다. contentEncryptionAlgorithm=AES/CBC/PKCS5Padding 또는 Camellia/PKCS5Padding 다음 128; contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding then force encryption is enabled then for AES/CBC/PKCS5Padding 또한 Camellia/CBC/PKCS5Padding 키 길이(192 및 256)도 가능합니다. | int | |
unprotectedAttributes GeneratorProvider (encrypt) | 보호되지 않은 속성의 생성기를 제공합니다. 기본값은 null이며 이는 보호되지 않은 속성이 Enveloped Data 오브젝트에 추가되지 않음을 의미합니다. https://tools.ietf.org/html/rfc5652#section-6.1 을 참조하십시오. | AttributesGenerator 공급자 | |
toBase64 (encrypt_sign) | 서명된 데이터 또는 Enveloped Data 인스턴스가 base 64로 인코딩되어야 하는지 여부를 나타냅니다. 기본값은 false입니다. | false | 부울 |
includeContent (sign) | 서명된 콘텐츠를 서명된 데이터 인스턴스에 포함해야 하는지 여부를 나타냅니다. false인 경우 분리된 서명 데이터 인스턴스가 CamelCryptoCmsSignedData 헤더에 생성됩니다. | true | 부울 |
서명자 (서명) | 서명자 정보: org.apache.camel.component.crypto.cms.api.SignerInfo를 구현하는-20에 대한 참조 | list | |
signedDataHeaderBase64 (verify) | CamelCryptoCmsSignedData 헤더의 값이 base64로 인코딩되었는지 여부를 나타냅니다. 기본값은 false입니다. 분리된 서명에만 적용됩니다. 분리된 서명 사례에서 헤더에는 서명된 Data 개체가 포함됩니다. | false | 부울 |
verifySignaturesOfAll Signers (verify) | true인 경우 서명된 Data 오브젝트에 포함된 모든 서명자의 서명이 확인됩니다. false인 경우 서명자 정보가 지정된 인증서 중 하나와 일치하는 하나의 서명만 확인됩니다. 기본값은 true입니다. | true | 부울 |