차세대 플랫폼

NGINX를 사용하여 리버스 프록시 구성

IBM Sterling® Order Management 시스템 (차세대)을 사용하면 디바이스가 서버와 통신할 때 mTLS 사용해야 합니다. 통신 중에 mTLS 사용하려면 Sterling™ Order Management 시스템 셀프 서비스를 사용하여 생성한 클라이언트 인증서로 장치를 구성해야 합니다.
클라이언트 인증서를 사용하여 통신 보안을 강화합니다. 그러나 클라이언트 인증서를 사용하면 관리 비용이 증가합니다. 관리 비용의 영향은 다양하며 사용 중인 디바이스 관리 인프라에 따라 다릅니다. 영향을 줄이기 위해 다음과 같은 여러 옵션을 사용할 수 있습니다.
  • 디바이스당 고유 클라이언트 인증서를 활용합니다. 이는 비용에 큰 영향을 미칩니다. 보안의 이점은 개별 인증서를 취소하여 개별 디바이스가 서비스에 액세스하지 못하도록 차단할 수 있다는 점입니다.
  • 유사한 디바이스를 그룹화하고 그룹별로 고유한 인증서를 설치합니다. 한 저장소의 모든 디바이스는 단일 클라이언트 인증서를 사용할 수 있습니다. 이 그룹화는 임의의 크기일 수 있으며 보안 전문가가 결정해야 합니다.
  • 클라이언트 인증서로 구성된 리버스 프록시 서버를 활용하여 Sterling Order Management System 서버와의 통신을 관리합니다. 이 구성을 사용하면 디바이스가 인증서로 구성되지 않지만 대신 프록시 서버에 의존하여 보안 연결을 관리합니다.

선택한 옵션을 보안 전문가가 검토하여 보안 정책을 충족하는지 여부 및 허용 가능한 위험인지 여부를 판별해야 합니다.

이 페이지에서는 리버스 프록시 서버를 구성하는 데 사용할 수 있는 한 가지 방법만 다룹니다. 이 메소드는 NGINX 서버를 사용하여 프록시 서버를 구현하며 데모 또는 테스트 용도로만 고려해야 합니다. 프로덕션 환경에서는 다음 예제를 사용하지 마십시오. NGINX 서버를 역방향 프록시로 사용하려면 보안 전문가에게 문의하여 서버 프로덕션 준비를 지원하십시오. 대체 솔루션이 가능하며 네트워크에서 이미 사용 가능할 수 있습니다. 예를 들어, 네트워크에서 F5 방화벽을 사용하는 경우 이를 역방향 프록시로 설정할 수 있습니다. 리버스 프록시를 구현하는 데 사용되는 하드웨어 또는 소프트웨어에 관계없이 디바이스와 프록시 간의 통신을 보안하는 것이 중요합니다. 이 주제에 대한 자세한 정보를 제공하는 것은 이 문서의 범위를 벗어납니다.

이미지

가정

  • 차세대 플랫폼에서 Sterling Order Management System 을 사용하고 네트워크의 모든 Sterling Order Management System 클라이언트에 대한 단일 클라이언트 인증서를 작성하고 관리하려고 합니다.
  • Docker 및 NGINX 기술에 대해 잘 이해하고 있습니다.
  • Linux 명령행 시스템을 사용할 수 있습니다.
  • 기본 네트워킹 개념에 대해서는 충분히 이해하고 있습니다.

전제조건

  • 차세대 플랫폼의 Sterling Order Management System 환경입니다.
  • 클라이언트 인증서를 생성하기 위한 액세스 권한이 있는 셀프 서비스 의 계정입니다.
  • 에 대한 이해 Docker.
  • Open SSL 사용 액세스 권한.

프로시저

컨테이너 기반 NGINX를 사용하여 다음 단계를 사용하십시오.
참고: 동일한 default.conf 파일 설정이 호스트에 직접 설치된 NGINX에 적용 가능합니다.
  1. NGINX 파일을 로컬 컴퓨터에 복사하십시오.
    1. NGINX 구성 파일에 대해 작업하려면 임시 컨테이너를 시작하십시오.
      docker run --name tmp-nginx-container -d nginx
    2. 기본 nginx 디렉토리를 로컬 컴퓨터의 폴더 (예: $HOME/nginx) 에 추출하십시오.
      docker cp tmp-nginx-container:/etc/nginx/$HOME/nginx/tmp/
    3. 임시 컨테이너를 삭제하십시오.
      docker rm -f tmp-nginx-container
      
  2. Sterling Order Management System 환경에서 클라이언트 인증서를 작성하십시오.
    1. 셀프 서비스에서 환경에 대한 클라이언트 인증서를 생성하고 인증서를 로컬 디렉터리(예: $HOME/nginx)에 저장합니다.
    2. 다음 명령을 실행하여 키 및 인증서를 .pem 파일로 추출하고 프롬프트가 표시되면 비밀번호를 제공하십시오.
      cd $HOME/nginx
      openssl pkcs12 -in $FILENAME.p12 -nokeys -out client.pem
      openssl pkcs12 -in $FILENAME.p12 -nocerts -nodes -out client.key
      
  3. OpenSSL을 사용하여 NGINX에 대한 자체 서명 인증서를 작성하십시오.
    cd $HOME/nginx
    openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
    
  4. NGINX를 구성하십시오.
    1. 텍스트 편집기에서 $HOME/nginx/conf.d/default.conf 를 열고 기존 구성을 삭제하십시오.
    2. $HOME/nginx/conf.d/default.conf 에서 다음 구성을 복사하고 proxy_pass 필드의 URL 모두 사용자 환경에 적합한 URL 바꿉니다.
      server {
              listen 80;
              listen [::]:80;
              server_name localhost;
      
              location / {
                  proxy_pass https://EXAMPLE-prod-4.oms.supply-chain.ibm.com/;
                  proxy_ssl_server_name on;
                  proxy_http_version 1.1;
                  proxy_ssl_certificate /etc/nginx/client.pem;
                  proxy_ssl_certificate_key /etc/nginx/client.key;
                  proxy_ssl_session_reuse on;
                  ######
                  ## Settings specific to a Docker container mapped to non-80/443 port on host
                  absolute_redirect off;
              }
          }
      
          server {
              listen 443 ssl;
              listen [::]:443 ssl;
              server_name localhost;
              ssl_certificate     /etc/nginx/certificate.pem;
              ssl_certificate_key /etc/nginx/key.pem;
              ssl_protocols       TLSv1.2;
              ssl_ciphers         HIGH:!aNULL:!MD5;
              location / {
                  proxy_pass https://EXAMPLE-prod-4.oms.supply-chain.ibm.com/;
                  proxy_ssl_server_name on;
                  proxy_http_version 1.1;
                  proxy_ssl_certificate /etc/nginx/client.pem;
                  proxy_ssl_certificate_key /etc/nginx/client.key;
                  proxy_ssl_session_reuse on;
                  ######
                  ## Settings specific to a Docker container mapped to non-80/443 port on host
                  absolute_redirect off;
              }
          }
  5. SSL및 비SSL 포트에 대한 옵션과 컨테이너 내에서 /etc/nginx/ 에 맵핑되는 호스트의 $HOME/nginx 디렉토리를 가리키는 볼륨을 사용하여 NGINX 컨테이너를 시작하십시오.
    docker run --name nginx -p 9080:80 -p 9443:443 --rm -v $HOME/nginx:/etc/nginx/:Z nginx
    
  6. 구성을 확인합니다.
    1. 브라우저에서 다음 URL중 하나를 사용하여 NGINX에 액세스하십시오.
      http://localhost:9080/smcfs/console/login.jsp
      https://localhost:9443/smcfs/console/login.jsp
      
    2. 브라우저가 Sterling Order Management System 환경으로 경로 지정되고 클라이언트 인증서를 제공하도록 프롬프트를 표시하지 않는지 확인하십시오.
    3. Sterling Order Management System 콘솔에 로그인하고 브라우저가 Sterling Order Management System 콘솔 홈 페이지로 경로 재지정되는지 확인하십시오.
    4. Sterling Order Management System 환경의 다른 모든 애플리케이션에 대해 URL을 사용하여 반복하십시오.

참조