WebtoB에 사설 SSL 인증서 적용하기

당사는 WAS서버에 TMAX社의 Jeus와 WebtoB를 적용하고, x-internet 솔루션으로 TOBESOFT의 Miplatform 사용하고 있습니다.
이전 버전의 브라우저에서는 “Block insecure private network request” experiments를 Disabled로 설정해서 Miplatform 설치여부를 체크하지 못하는 이슈를 해결했는데,
Block insecure private network request
크롬 브라우저가 142.0.7444.176 버전으로 업데이트되면서 “Block insecure private network request” experiments가 삭제되고 “Insecure orgins treated as secure” experiment를 사용해야 했습니다.
Insecure orgins treated as secure
브라우저가 업데이트되면서 매번 동일한 이슈가 발생할 것 같아서, WAS서버에 사설 SSL 인증서를 적용하여 Miplatform 설치여부를 체크하지 못하는 이슈를 근본적으로 해결하고자 합니다.

  1. 단계: Root CA (루트 인증기관) 개인 키 및 인증서 생성
    1. Root CA 개인 키 (비밀 키) 생성: 비밀번호(Pass Phrase)를 설정해야 합니다.
      $ cd /${WEBTOBDIR}/ssl/
      $ openssl genrsa -aes256 -out root_ca.key 4096
      
    2. Root CA 공개 인증서 (rootca.crt) 생성 및 자체 서명: 1.1에서 설정한 비밀번호를 입력해야 합니다.
      $ openssl req -x509 -sha256 -days 3650 -key root_ca.key -out rootca.crt -subj "/C=KR/ST=Seoul/O=My Root CA/CN=Root Authority"
      
  2. 단계: Intermediate CA (중간 인증기관) 생성 및 서명
    1. Intermediate CA 개인 키 생성: 비밀번호(Pass Phrase)를 설정해야 합니다.
      $ openssl genrsa -aes256 -out intermediate.key 4096
      
    2. Intermediate CA CSR 생성(Certificate Signing Request): 2.1에서 설정한 비밀번호를 입력해야 합니다.
      openssl req -new -sha256 -key intermediate.key -out intermediate.csr -subj "/C=KR/ST=Seoul/O=My Intermediate CA/CN=Intermediate Authority"
      
    3. Root CA로 Intermediate CA 인증서 서명: 1.1에서 설정한 Root CA 비밀번호를 입력해야 합니다.
      openssl x509 -req -in intermediate.csr -sha256 -CA rootca.crt -CAkey root_ca.key -CAcreateserial -days 3650 -out intermediate.crt
      
  3. 단계: 체인 인증서 (chain.crt) 병합
    1. 클라이언트가 서버 인증서를 신뢰할 수 있도록 Intermediate CA부터 Root CA까지 연결하는 체인 파일을 생성
      cat intermediate.crt rootca.crt > chain.crt
      
  4. 단계: passwd 파일 생성
    1. 개인키 패스워드를 암호화 하여 저장한 뒤, *SSL 절의 PassPhraseDialog 설정을 통해 패스워드가 자동 입력되도록 설정
      $ wsmkppd passwd ssl_tmax
      
  5. 단계: 최종 서버 인증서 및 개인 키 생성
    1. 서버 개인 키 (privkey.key) 생성
      $ openssl genrsa -out privkey.key 2048
      
    2. SAN 설정을 위해 wbssl.cnf 설정파일 원본 복사 후 수정(Subject Alternative Name)
      $ cp wbssl.cnf wbssl.cnf.bak
      $ vi wbssl.cnf
      .....
      [ req ]
      default_bits            = 1024
      default_keyfile         = privkey.key  <- 3.1단계에서 생성한 서버 개인 키로 변경
      
      [ v3_req ]
      subjectAltName = @alt_names  <- 추가
      # Extensions to add to a certificate request
      
      #basicConstraints = CA:FALSE  <- 주석처리
      keyUsage = nonRepudiation, digitalSignature, keyEncipherment
      
      [ alt_names ]         <- 추가
      DNS.1 = localhost     <- 추가
      IP.1 = 58.54.160.111  <- 추가
      ......
      
    3. 서버 CSR 생성(SAN 포함 권장): 3.2단계에서 수정한 wbssl.cnf 포함
      $ openssl req -new -sha256 -key privkey.key -out server.csr -config wbssl.cnf
      
    4. Intermediate CA로 서버 인증서 (cert.crt) 서명: 유효기간을 365일 설정했으므로 1년마다 갱신해야 합니다.
      $ openssl x509 -req -in server.csr -sha256 -CA intermediate.crt -CAkey intermediate.key -CAcreateserial -days 365 -extfile wbssl.cnf -extensions v3_req -out cert.crt
      
      ## 1단계 ~ 5단계까지 생성한 파일 리스트
      $ ll
      -rw-rw-r-- 1 pmmhadm pmmhadm 1594 121 09:08 cert.crt
      -rw-rw-r-- 1 pmmhadm pmmhadm 3777 121 09:09 chain.crt
      -rw-rw-r-- 1 pmmhadm pmmhadm 1842 121 08:50 intermediate.crt
      -rw-rw-r-- 1 pmmhadm pmmhadm 1679 121 08:49 intermediate.csr
      -rw-rw-r-- 1 pmmhadm pmmhadm 3326 121 08:47 intermediate.key
      -rw-rw-r-- 1 pmmhadm pmmhadm   17 121 09:08 intermediate.srl
      -rw------- 1 pmmhadm pmmhadm   27 121 09:17 passwd
      -rw-rw-r-- 1 pmmhadm pmmhadm 1679 121 08:50 privkey.key
      -rw-rw-r-- 1 pmmhadm pmmhadm 3326 121 08:44 root_ca.key
      -rw-rw-r-- 1 pmmhadm pmmhadm 1935 121 08:46 rootca.crt
      -rw-rw-r-- 1 pmmhadm pmmhadm   17 121 08:50 rootca.srl
      -rw-rw-r-- 1 pmmhadm pmmhadm 1029 121 09:01 server.csr
      -rwxr-xr-x 1 pmmhadm pmmhadm 7049 121 09:07 wbssl.cnf
      -rwxr-xr-x 1 pmmhadm pmmhadm 6967 121 08:56 wbssl.cnf.bak
      
  6. 단계: WebtoB 설정 파일(http.m 파일) 수정 및 컴파일
    1. ssl용 http.m 파일 생성 및 수정(파란색 부분은 추가): TMAXSOFT의 SSL 인증서 가이드 참고
      $ cd /${WEBTOBDIR}/config/
      $ cp http.m http.m.ssl
      $ vi http.m.ssl
      ....
      *VHOST
      vhost_name      HOSTNAME = "xxx.xxx.xxx.xxx",  <- 웹서버의 IP address 지정
                      DOCROOT = "/path/to/docroot",  <- index.html 등 파일이 있는 디렉토리 지정
                      PORT = "1134",                 <- 웹 애플리케이션 포트 번호 지정  
                      IndexName = "login.jsp",
                      LOGGING = "log7",
                      ERRORLOG = "log8",
                      SSLFLAG = Y,
                      SSLNAME = "ssl_tmax"
      
      *SSL
      ssl_tmax        CertificateFile = "/package/pmmhadm/webtob/ssl/cert.crt",
                      CertificateKeyFile = "/package/pmmhadm/webtob/ssl/privkey.key",
                      CertificateChainFile = "/package/pmmhadm/webtob/ssl/chain.crt",
                      CACertificateFile = "/package/pmmhadm/webtob/ssl/rootca.crt",
                      PassPhraseDialog = "/package/pmmhadm/webtob/ssl/passwd",
                      Protocols = "-SSLv2,-SSLv3,-TLSv1,-TLSv1.1,TLSv1.2,TLSv1.3",
                      RequiredCiphers = "HIGH:!RSA:!SHA1"
      
    2. ssl용 WebtoB 설정 파일(http.m.ssl) 컴파일
      $ wscfl -i http.m.ssl
      
      ※ 아래와 같은 오류가 발생하면, Protocols에서 TLSv1.3를 삭제합니다.
      [CFL-00557] Incorrect SSL Protocol string (TLSv1.3). Protocols must be comma-separated.
      [CFL-00558] Invalid SSL Protocols (-SSLv2, -SSLv3, -TLSv1, -TLSv1.1, TLSv1.2, TLSv1.3,). line=78
      
  7. 단계: WebtoB 재가동
    1. WebtoB를 재가동하여 https로 접속되는지 확인합니다.
      $ cd /${WEBTOBDIR}/bin/
      $ ./wsdown
      $ ./wsboot
      

참고로, Miplatform이 정상적으로 작동하기 위해서 start.xml과 newlaunch 파일도 수정해야 했습니다.(http -> https 변경, https Protocol 설정 등)

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다