
Outlook에서 Office 365 서명/암호화 목적으로 사용할 CA 및 중간 CA를 만들려고 합니다. 저는 여러 튜토리얼을 따를 수 있었고 OpenSSL을 사용하여 인증서를 생성하는 CA 및 중간 CA를 생성할 수 있었습니다. 두 가지 문제가 발생했습니다.
- 최종 사용자 x509 최종 사용자 인증서를 생성하면 중간 CA에 인증서 발급 권한이 없기 때문에 유효하지 않은 것으로 플래그가 지정됩니다.
- 대신 루트 CA를 사용하여 최종 사용자 인증서를 생성하면 이메일에 잘 서명하고 암호화할 수 있지만 잠시 후 작동이 중지됩니다.
문제 2는 중간 CA에서 최종 사용자 인증서에 서명하지 않았기 때문에 발생한 것 같습니다. Exchange Online에서 SMIMEExpiredCertificateThumbprint는 루트 CA가 아닌 중간 인증서 지문을 반환합니다. 여전히 루트 CA에서 생성된 최종 사용자 인증서를 GAL에 게시하고 몇 가지 빠른 이메일을 보낼 수 있지만 Outlook이 GAL과 동기화되면 해당 인증서가 중간 인증서에서 생성되지 않은 것을 확인하고 승인되지 않은 것으로 선언합니다.
문제 1을 해결하면 문제 2도 해결될 것이라고 생각하지만, 중간 CA에 인증서 발급 권한을 설정하는 방법을 모르겠습니다. 도움이 필요하세요?
현재 루트 및 중간 CA를 생성하는 방법은 다음과 같습니다.
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt
openssl genrsa -out ia.key 4096
openssl req -new -key ia.key -out ia.csr
openssl x509 -req -days 730 -in ia.csr -CA ca.crt -CAkey ca.key -serial -out ia.crt
클라이언트가 생성되는 방법은 다음과 같습니다.
openssl genrsa -aes128 -out email.key 2048
openssl req -new -key email.key -out email.csr
openssl x509 -req -days 365 -in email.csr -CA ia.crt -CAkey ia.key -CAcreateserial -out email.crt
openssl pkcs12 -export -in email.crt -inkey email.key -out email.pfx
openssl x509 -in email.crt -serial -noout >> email.meta
openssl x509 -in email.crt -fingerprint -noout >> email.meta
답변1
따라서 기본적으로 OpenSSL 문제를 해결하는 방법을 반드시 알 필요는 없었지만 GnuTLS가 작업하기 쉬운 방식으로 인증서 사용을 묻는 메시지를 표시한다는 것을 발견했습니다.
다음과 같이 루트 CA를 생성합니다.
certtool --generate-privkey --bits 4096 --outfile ca.key
certtool --generate-self-signed --load-privkey ca.key --template ca.vars --outfile ca.crt
내 ca.vars는 다음과 같습니다.
organization = [Company Name]
unit = [Org Unit]
locality = [City]
state = [State]
country = [Country Code]
challenge_password = [password]
password = [password]
expiration_days = 1825
serial = 1
ca
cert_signing_key
crl_signing_key
cn = '[Company Name] Root CA 000001'
참고: 비밀번호는 안전하지 않은 ca.vars 파일에 나열되어 있습니다. 하지만 내 구현에서는 스크립트가 vars 파일을 생성한 다음 srm 삭제 도구를 사용하여 삭제합니다. vars 파일을 생성하는 데 스크립트를 사용하지 않는 경우 비밀번호 및 Challenge_password 줄을 생략하면 메시지가 표시됩니다.
그런 다음 중간 CA는 다음과 같습니다.
certtool --generate-privkey --bits 4096 --outfile ia.key
certtool --generate-request --template ia.vars --load-privkey ia.key --outfile ia.csr
certtool --generate-certificate --template ia.vars --load-request ia.csr --load-ca-certificate ca.crt --load-ca-privkey ca.key --outfile ia.crt
ca.vars와 ia.vars의 차이점은 만료일을 365로 설정하고 다음 줄을 추가한다는 것입니다.
path_len = 1
여기에서 openssl 및 ia_[sign/encrypt] 인증 기관과 함께 위 스크립트를 사용하여 Office 365가 포함된 Outlook에서 이메일 서명/암호화에 사용할 수 있는 x509 인증서를 생성할 수 있습니다. 참고용으로 다시 붙여넣겠습니다.
openssl genrsa -aes128 -out email.key 2048
openssl req -new -key email.key -out email.csr
openssl x509 -req -days 365 -in email.csr -CA ia.crt -CAkey ia.key -CAcreateserial -out email.crt
openssl pkcs12 -export -in email.crt -inkey email.key -out email.pfx
openssl x509 -in email.crt -serial -noout >> email.meta
openssl x509 -in email.crt -fingerprint -noout >> email.meta
이것이 나 외에 누군가에게 도움이 되기를 바랍니다! :)