WebSphere Liberty에서 HTTPS 사용

4566 단어 자바HTTPSLiberty

하고 싶은 일



자작의 웹 어플리케이션을 Google의 Lighthouse에 걸어 보려고 하면 HTTPS화하는 것이 필수인 것 같았기 때문에, Liberty로 HTTPS를 사용하는 방법을 시도해 보았다.

SAN 필요



자기 서명 증명서를 이용해 HTTPS 통신을 하면 좋기 때문에 어렵지 않다고 생각했지만, 옛날에는 Common Name(CN)가 설정되어 있으면 OK였지만, Chrome 58 이후는 증명서에 Subject Alternative Name(SAN)이 등록되어 있는 것을 요구하기 위해, SAN을 포함한 증명서를 만들 필요가 있다.


시도한 환경


  • AdoptOpenJDK HotSpot 11.0.3
  • WebSphere Liberty 19.0.0.4
  • macOS Mojave
  • Chrome 74

  • 기본적으로 생성되는 인증서는 어떻게 됩니까?



    ssl-1.0 또는 transportSecurity-1.0 기능이 활성화된 WebSphere Liberty를 시작하면 user/servers/(server-name)/resources/securitykey.p12라는 파일이 생성됩니다. 이 파일은 PKCS12라는 형식의 파일로 안에 비밀키와 공개키 증명서가 보존되어 있다. 파일에는 암호가 걸리고 server.xml<keyStore> 요소에 암호를 지정합니다.

    내용의 확인 방법은 이하와 같다(패스워드는 <keyStore> 로 지정한 것). default라는 별명(alias)으로 증명서가 등록되어 있는 것을 알 수 있다. 암호를 듣지 않으려면 -storepass를 입력하십시오.
    keytool -v -list -storetype pkcs12 -keystore key.p12 
    

    SAN이 있는 인증서 작성 절차



    비밀키를 입수하고 거기에서 SAN 첨부의 증명서를 만들어 간다. 비밀키는 디폴트로 생성되는 p12 파일로부터 꺼낼 수도 있는 것 같지만(후술), 여기에서는 제로로부터 만들어 보자. iTerm.app이라면 openssl 명령을 실행할 때 암호를 묻는 경우 키보드 입력이 작동하지 않기 때문에 Terminal.app를 사용했습니다.
    # 秘密鍵を作成する
    openssl genrsa 2048 > default.key
    
    # Certificate Signing Request(CSR, 証明書署名要求)を作成する
    # Country Nameなどを聞かれる。最低限Common Name(CN)はlocalhostとする必要がある
    openssl req -new -key default.key > default.csr
    
    # SANがlocalhostとなるように入力ファイルを作成する
    echo subjectAltName=DNS:localhost > default-san.ext
    
    # 証明書を作成する
    openssl x509 -days 3650 -sha256 -req -signkey default.key < default.csr > default.crt -extfile default-san.ext
    
    # PKCS12形式の鍵ストアを作成する
    openssl pkcs12 -export -in default.crt -inkey default.key -out default.p12 -name default
    
    # 作成したp12ファイル内の証明書にSubjectAlternativeNameが記載されていることを確認する
    keytool -v -list -keystore default.p12 -storetype pkcs12
    

    Mac 키체인에 인증서 등록



    키체인 액세스 .app를 시작하고 왼쪽 창에서 '로그인', '인증서'를 엽니다. 오른쪽 창에 인증서 목록이 표시되므로 여기에 위의 단계에서 만든 default.crt를 드래그 앤 드롭으로 추가합니다. 추가하면 SSL 부분을 "항상 신뢰"로 변경합니다.



    Chrome으로 다시 액세스하면 자체 서명 인증서를 사용할 때 경고 메시지없이 액세스 할 수 있습니다.


    참고



    p12 파일에서 개인 키, 인증서를 검색하는 방법



    다음 명령으로 꺼낼 수 있습니다. 앞서 언급했듯이 iTerm.app이라면 비밀번호 입력이 잘되지 않기 때문에 Terminal.app를 사용했습니다.
    # 秘密鍵を取り出す
    openssl pkcs12 -in key.p12 -nocerts -nodes -out privatekey
    # 証明書を取り出す
    openssl pkcs12 -in key.p12 -clcerts -nokeys -out default2.crt
    

    p12 또는 jks



    옛날에는 p12가 아니라 jks 형식이었다고 생각하고 OpenLiberty의 Issue를 들여다 보았는데 19.0.0.3에서 바뀌었을지도 모른다. 일반적으로 p12가 권장되는 것 같습니다.
    - htps : // 기주 b. 코 m / 오 펜 rty / 오 펜 rty / 이스에 s / 7041

    좋은 웹페이지 즐겨찾기