ColdFusion에 CA 인증서 설치

ColdFusion에 연결된 웹 서버, 메일 서버, LDAP 서버(OpenLDAP, Active Directory 등)에서 사용하는 인증서는 개인 CA에서 발행한 인증서나 자체 인증서일 경우 통신할 수 없기 때문에 이 문제를 해결하는 방법입니다.
※ 이 글은 ColdFusion 2018을 기본 설정으로 설치하는 경우를 전제로 합니다.ColdFusion 2016이라도 경로를 바꾸면 사용할 수 있을 것 같습니다.

갑자기 궁금해졌어요.


ColdFusion은 JVM에서 실행되므로 keytool 명령을 사용하여 인증서를cacerts 키 라이브러리로 가져오는 Java 방법을 직접 사용할 수 있습니다.제공된 Java 런타임 (JRE) 에는 keytool 도 함께 제공됩니다.
  • JRE 이C:\ColdFusion2018\jre.
  • cacerts 키 라이브러리의 암호는 기본적으로 changeit 입니다.
  • 기본적으로 이것만 알면 나머지는 구글이라면 많이 나올 거예요. 제가 자주 사용하는 윈도 환경에서의 방법을 정리했어요.

    단계


    1. 인증서 준비


    가져올 인증서 파일을 준비합니다.
  • 서버 자체가 인증서를 사용하는 경우 인증서 파일
  • 서버가 개인 CA에서 발행한 인증서를 사용하는 경우 CA의 인증서 파일(서버 인증서가 아님)
  • 파일 형식 DER(2진 형식), PEM(BASE64 형식), P7B(PKCS#7 형식)는 모두 가능하지만 자주 사용하는 PEM 형식으로 준비해야 합니다.
    파일 이름은 example-ca.cer 저장된 예로 추천합니다.

    2. 일괄 처리


    운용할 때와 테스트 등 매번 수작업으로 만드는 것이 힘들기 때문에 Windows 대량화를 해야 한다.
    example-ca.cer를 저장한 폴더와 같은 곳에서 다음 내용을 복사한 register-cert.bat 파일을 만들었습니다.
    register-cert.bat
    @echo off
    setlocal
    
    set JRE_HOME=C:\ColdFusion2018\jre
    set CERT_FILE=%~dp0example-ca.cer
    set CERT_ALIAS=example-ca
    
    echo %CERT_FILE% を別名 %CERT_ALIAS% として登録中...
    "%JRE_HOME%\bin\keytool.exe" -importcert -alias "%CERT_ALIAS%" -file "%CERT_FILE%" -keystore "%JRE_HOME%\lib\security\cacerts" -storepass changeit -noprompt
    
    echo.
    pause
    
    필요하지 않으면 삭제할 일괄 처리 파일도 준비되어 있습니다.
    remove-cert.bat
    @echo off
    setlocal
    
    set JRE_HOME=C:\ColdFusion2018\jre
    set CERT_ALIAS=example-ca
    
    echo 別名 %CERT_ALIAS% を削除中...
    "%JRE_HOME%\bin\keytool.exe" -delete -alias "%CERT_ALIAS%" -keystore "%JRE_HOME%\lib\security\cacerts" -storepass changeit -noprompt
    
    echo.
    pause
    
    CERT_FILE의 example-ca.cer 부분은 파일 이름이기 때문에 적당히 변경합니다.
    CERT_ALIAS의 지정은 인증서의 별명으로 등록됩니다.삭제할 때 이 이름을 사용합니다.

    3. 폴더 내용


    이런 느낌이면 OK.

    4. 등록

    register-cert.bat를 두 번 클릭하여 실행합니다.
    결과:
    C:\cert-test\example-ca.cer を別名 example-ca として登録中...
    警告: cacertsキーストアにアクセスするには-cacertsオプションを使用してください
    証明書がキーストアに追加されました
    
    続行するには何かキーを押してください . . .
    
    인증서가 키 라이브러리에 추가되었습니다.
    참고로 이미 등록하면 다음과 같이 실패합니다.
    C:\cert-test\example-ca.cer を登録中...
    警告: cacertsキーストアにアクセスするには-cacertsオプションを使用してください
    keytoolエラー: java.lang.Exception: 証明書はインポートされませんでした。別名<example-ca>はすでに存在します
    
    続行するには何かキーを押してください . . .
    

    5. 삭제

    remove-cert.bat를 두 번 클릭하여 실행합니다.
    결과:
    別名 example-ca を削除中...
    警告: cacertsキーストアにアクセスするには-cacertsオプションを使用してください
    
    続行するには何かキーを押してください . . .
    
    성공 소식이 없는 것 같습니다.등록하지 않으면 다음과 같이 실패합니다.
    別名 example-ca を削除中...
    警告: cacertsキーストアにアクセスするには-cacertsオプションを使用してください
    keytoolエラー: java.lang.Exception: 別名<example-ca>は存在しません
    
    続行するには何かキーを押してください . . .
    

    지원


    ColdFusion 2018의 설치 시기에 따라 JVM은'Java8 기반'과'Java11 기반'두 가지 모델이 있는 것 같습니다.
    이번 환경에서 Java11은 keytool에 -cacerts 옵션을 사용하라고 경고하지만 추가, 삭제할 수 있습니다.-cacerts 옵션과 -keystore 배타,cacerts 파일의 경로를 지정하지 않아도 됩니다.단, 자바8에는 이 옵션이 없기 때문에 여러 환경에서 일괄 처리를 사용하려면 기록된 것처럼 키스토어에 경로를 지정하는 것이 좋습니다.

    Java 11에서 경고하지 마십시오.


    각 일괄 처리 파일의 -keystore "%JRE_HOME%\lib\security\cacerts" 부분을 -cacerts 로 바꾸기만 하면 된다.

    참고 문헌

  • cfhttp 태그 참조
  • keytool - Java 8
  • keytool - Java 10
  • 좋은 웹페이지 즐겨찾기