74장. crypto CMS 구성 요소
Camel 버전 2.20에서 사용 가능
CMS(Cryptographic Message Syntax) 는 메시지에 서명 및 암호화하기 위한 잘 설정된 표준입니다. Apache Crypto CMS 구성 요소는 이 표준의 다음 부분을 지원합니다. * 컨텐츠 유형 "Enveloped Data"와 키 전송(symmetric key), * Content Type "Signed Data"를 사용합니다. CMS Enveloped Data 인스턴스를 생성하고, CMS Enveloped Data 인스턴스를 해독하고, CMS Signed Data 인스턴스를 생성하고, CMS Signed Data 인스턴스를 검증할 수 있습니다.
구성 요소는 Bouncy Castle 라이브러리 bcprov-jdk15on 및 bcpkix-jdk15on을 사용합니다.
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 구성 요소는 공급자를 등록합니다.
74.1. 옵션
Crypto CMS 구성 요소는 아래에 나열된 3 가지 옵션을 지원합니다.
이름 | 설명 | 기본값 | 유형 |
---|---|---|---|
signedDataVerifier 구성 (advanced) | 확인 작업에 대한 uri 매개 변수를 결정하는 공유 SignedDataVerifierConfiguration을 구성하려면 다음을 수행합니다. | SignedDataVerifier 구성 | |
EnvvedDataDecryptor 구성 (advanced) | 암호 해독 작업에 대한 uri 매개 변수를 결정하는 공유 EnvelopedDataDecryptorConfiguration을 구성하려면 다음을 수행합니다. | EnvelopedDataDecryptor 구성 | |
resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Crypto CMS 끝점은 URI 구문을 사용하여 구성됩니다.
crypto-cms:cryptoOperation:name
다음 경로 및 쿼리 매개변수를 사용합니다.
74.1.1. 경로 매개 변수(2 매개변수):
이름 | 설명 | 기본값 | 유형 |
---|---|---|---|
cryptoOperation | required: crypto-cms:sign을 작업으로 설정합니다. 예를 들어, crypto-cms:sign의 암호 구성표 뒤에 제공된 Crypto 작업을 설정합니다. 가능한 값: 서명, 확인, 암호화 또는 암호 해독. | CryptoOperation | |
name | 필수 URI의 이름 부분은 camel 컨텍스트 내에서 서로 다른 서명자/verifier/encrypt 또는 끝점을 구분하도록 사용자에 의해 선택할 수 있습니다. | 문자열 |
74.1.2. 쿼리 매개변수(15 매개변수):
이름 | 설명 | 기본값 | 유형 |
---|---|---|---|
키 저장소 (공용) | 서명자 개인 키, 확인자 공개 키, 공개 키 암호화, 조작에 따라 개인 키 해독 또는 개인 키가 포함된 키 저장소입니다. 이 매개변수 또는 매개변수 'keyStoreParameters'를 사용합니다. | KeyStore | |
keyStoreParameters (common) | 서명자 개인 키, 확인자 공개 키, 공개 키 암호화, 조작에 따라 개인 키 암호 해독이 포함된 키 저장소입니다. 이 매개변수 또는 매개변수 'keystore'를 사용합니다. | KeyStoreParameters | |
synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
암호 (암호) | 개인 키의 암호를 설정합니다. 키 저장소의 모든 개인 키의 암호가 동일한 것으로 가정합니다. 설정하지 않으면 KeyStoreParameters에 제공된 키 저장소 암호가 개인 키의 암호라고 가정합니다. | char[] | |
fromBase64 (decrypt_verify) | true인 경우 CMS 메시지는 base 64로 인코딩되며 처리 중에 디코딩해야 합니다. 기본값은 false입니다. | false | 부울 |
contentEncryptionAlgorithm (encrypt) | 암호화 알고리즘 (예: DESede/CBC/PKCS5Padding) 가능한 값: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding. | 문자열 | |
originatorInformation Provider (encrypt) | originator 정보에 대한 공급자입니다. https://tools.ietf.org/html/rfc5652#section-6.1 에서 참조하십시오. 기본값은 null입니다. | OriginatorInformation 공급자 | |
수신자 ( encrypt) | 수신자 정보: org.apache.camel.component.crypto.cms.api.TransRecipientInfo 인터페이스를 구현하는 빈에 대한 참조입니다. | list | |
secretKeyLength (encrypt) | 콘텐츠 암호화에 사용되는 비밀 대칭 키의 키 길이입니다. 지정된 콘텐츠 암호화 알고리즘이 다른 크기의 키를 허용하는 경우에만 사용됩니다. contentEncryptionAlgorithm=AES/CBC/PKCS5Padding or Camellia/PKCS5Padding then 128; contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding then 192, 128; 강력한 암호화가 활성화된 경우 AES/CBC/PKCS5Padding 및 Camellia/CBC/PKCS5Padding의 경우 키 길이 192 및 256을 사용할 수 있습니다. | int | |
보호되지 않은Attributes GeneratorProvider (encrypt) | 보호되지 않은 특성에 대한 생성기의 공급자입니다. 기본값은 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 | 부울 |
서명 자(sign) | 서명자 정보: org.apache.camel.component.crypto.cms.api.SignerInfo를 구현하는 빈에 대한 참조 | list | |
signedDataHeaderBase64 (verify) | CamelCryptoCmsSignedData 헤더의 값이 base64 인코딩인지 여부를 나타냅니다. 기본값은 false입니다. 분리된 서명에만 관련이 있습니다. 분리된 서명 사례에서 헤더에는 Signed Data 오브젝트가 포함됩니다. | false | 부울 |
verifySignaturesOfAll Signers (verify) | true인 경우 Signed Data 개체에 포함된 모든 서명자의 서명이 확인됩니다. false인 경우 서명자 정보가 지정된 인증서 중 하나와 일치하는 하나의 서명만 확인합니다. 기본값은 true입니다. | true | 부울 |