이 항목에서는 vSphere Replication 장치에서 FIPS(Federal Information Processing Standard) 모드를 활성화하기 위해 수행해야 하는 작업을 간략하게 설명합니다.

참고: FIPS 모드의 인증서 구성에서는 PKCS#12 인증서 파일 형식이 지원되지 않습니다. PKCS#12 파일 형식은 비 FIPS 규격 알고리즘을 표준 규격으로 사용합니다.

사전 요구 사항

환경을 배포할 때 신뢰할 수 있는 인증서를 사용해야 합니다.

프로시저

  1. 엄격 모드에서 vSphere Replication 관리 서버를 시작합니다.
    1. /opt/vmware/hms/conf/hms-fips.conf로 이동하여 파일을 열고 다음 설정을 변경합니다.
       "appl_system_cryptography" : true
    2. 오래된 BCFKS 저장소가 있으면 제거합니다.
      rm /opt/vmware/hms/security/*.bks
    3. vSphere Replication 관리 서버 서비스를 다시 시작합니다.
      systemctl restart hms
  2. 엄격 모드에서 vSphere Replication을 시작합니다.
    1. /etc/vmware/hbrsrv.xml로 이동하여 파일을 열고 다음 설정을 변경합니다.
      <Config>
          <vmacore>
              <ssl>
                  <fips>true</fips>
              </ssl>
          </vmacore>
          </Config>
    2. /usr/lib/vmware/lib/ssl/openssl.cnf를 편집하고 다음 줄의 주석 처리를 제거한 후 # .include /usr/lib/vmware/lib/ssl/fipsmodule.cnf default_properties = "fips=no" 줄을 default_properties = "fips=yes"로 변경합니다.
      파일 조각은 다음과 같은 모양이어야 합니다.
      # Refer to the OpenSSL security policy for more information.
      # In ESX this will be generated at boot time.
      .include /usr/lib/vmware/lib/ssl/fipsmodule.cnf
      ...
      [algorithm_sect]
      # Since we use both default and FIPS provider, we need to be specific
      # about which algorithm implementation to use as default.
      default_properties = "fips=yes"
    3. HBR 서비스를 다시 시작합니다.
      systemctl restart hbrsrv
  3. 엄격 모드에서 dr-configurator 서비스를 시작합니다.
    1. /opt/vmware/dr/conf/drconfig.xml로 이동하여 파일을 열고 다음 설정을 변경합니다.
      <Config>
          <vmacore>
              <ssl>
                  <fips>true</fips>
              </ssl>
          </vmacore>
          </Config>
    2. /usr/lib/systemd/system/dr-configurator.service를 편집합니다. # Uncomment to enable FIPS 아래의 줄의 주석 처리를 제거합니다.
      파일 조각은 다음과 같은 모양이어야 합니다.
      # Uncomment to enable FIPS
              Environment=OPENSSL_MODULES=/opt/vmware/dr/lib/ossl-modules
              Environment=OPENSSL_CONF=/opt/vmware/etc/dr/ssl/openssl.cnf
    3. dr-configrator 서비스를 다시 시작합니다.
      systemctl daemon-reload
             systemctl restart dr-configurator
  4. 장치에 루트 사용자로 로그인하고 커널 cmdline을 편집합니다.
    1. /boot/grub/grub.cfg를 엽니다.
    2. menuentry 항목을 찾습니다.
    3. 줄 끝에 linux로 시작하는 각 menuentry의 줄 끝에 다음을 추가합니다.
      fips=1
    4. 파일을 저장합니다.
  5. 엄격 모드에서 구성 UI를 시작합니다.
    1. /usr/lib/systemd/system/drconfigui.service를 편집합니다. 기존 Environment='CATALINA_OPTS=-Xms768m -Xmx1024m'을 주석 처리하고 # Uncomment to enable FIPS 아래 줄의 주석 처리를 제거합니다.
      파일 조각은 다음과 같은 모양이어야 합니다.
      Environment=JRE_HOME=/usr/java/jre-vmware
      # Comment when enable FIPS
      # Environment='CATALINA_OPTS=-Xms768m -Xmx1024m'
      # Uncomment to enable FIPS
      Environment='SERVICE_CLASSPATH=$CATALINA_BASE/lib/ext/*'
      Environment='CATALINA_OPTS=-Xms768m -Xmx1024m -Djava.security.properties==/opt/vmware/dr-client/conf/vmware-override-java.security -Dorg.bouncycastle.jca.enable_jks=true -Dorg.bouncycastle.fips.approved_only=true'
      
    2. /opt/vmware/drconfigui/conf/context.xml 파일에서 <Manager> 태그의 주석 처리를 제거합니다.
      태그가 있는 파일 조각은 다음과 같은 모양이어야 합니다.
      <!-- Uncomment to enable FIPS mode.          -->
      <Manager pathname="" secureRandomAlgorithm=""/>
    3. (선택 사항) 장치에 대해 FIPS가 이미 사용되도록 설정된 경우 drconfigui 서비스를 다시 시작합니다.
      systemctl daemon-reload; systemctl restart drconfigui
  6. 엄격 모드에서 UI를 시작합니다.
    1. /usr/lib/systemd/system/dr-client.service를 편집합니다. 기존 Environment='CATALINA_OPTS=-Xms768m -Xmx1024m'을 주석 처리하고 # Uncomment to enable FIPS 아래 줄의 주석 처리를 제거합니다.
      파일 조각은 다음과 같은 모양이어야 합니다.
      Environment=JRE_HOME=/usr/java/jre-vmware
      # Comment when enable FIPS
      # Environment='CATALINA_OPTS=-Xms768m -Xmx1024m'
      # Uncomment to enable FIPS
      Environment='SERVICE_CLASSPATH=$CATALINA_BASE/lib/ext/*'
      Environment='CATALINA_OPTS=-Xms768m -Xmx1024m -Djava.security.properties==/opt/vmware/dr-client/conf/vmware-override-java.security -Dorg.bouncycastle.jca.enable_jks=true -Dorg.bouncycastle.fips.approved_only=true'
      
    2. /opt/vmware/dr-client/conf/context.xml 파일에서 <Manager> 태그의 주석 처리를 제거합니다.
      태그가 있는 파일 조각은 다음과 같은 모양이어야 합니다.
      <!-- Uncomment to enable FIPS mode.              -->
      <Manager pathname="" secureRandomAlgorithm=""/>
    3. /opt/vmware/dr-client/lib/h5dr.properties 파일을 편집하고 루트 CA 인증서가 있는 BCFKS 형식 키 저장소 및 신뢰 저장소를 가리키도록 매개 변수를 수정합니다.
      속성은 다음과 같은 모양이어야 합니다.
      drTrustStorePass=<same as keyStorePass>
      drTrustStoreName=h5dr.truststore.bks
      keyStoreName=h5dr.keystore.bks
      기본 신뢰 저장소가 아닌 다른 신뢰 저장소를 사용하기로 선택하는 경우 /opt/vmware/dr-client/lib/ 또는 /opt/vmware/dr-client/webapps/dr/WEB-INF/classes/에 신뢰 저장소에 대한 링크를 추가해야 합니다. 키 저장소 형식은 BCFKS여야 합니다. JKS 형식에서 가져오려면 다음 명령을 사용합니다.
      $JAVA_HOME/bin/keytool -importkeystore -srckeystore <path-to-jks-keystore> -srcstoretype JKS -srcstorepass <keystorepass> -destkeystore <path-to-target-bks-keystore> -deststoretype BCFKS -deststorepass <keystorepass> -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath /opt/vmware/dr-client/lib/ext/bc-fips-1.0.2.3.jar
      참고: 사용하는 키 저장소 및 신뢰 저장소 파일에는 Others: Read 사용 권한이 있어야 합니다. 장치를 재구성한 후에는 위 규칙에 따라 /opt/vmware/dr-client/lib/h5dr.properties 파일을 다시 편집해야 합니다.
    4. (선택 사항) 장치에 대해 FIPS가 이미 사용되도록 설정된 경우 dr-client 서비스를 다시 시작합니다.
      systemctl daemon-reload; systemctl restart dr-client
  7. 엄격 모드에서 UI 플러그인(dr-client-plugin)을 시작합니다.
    1. /usr/lib/systemd/system/dr-client-plugin.service를 편집합니다. 기존 Environment='CATALINA_OPTS=-Xms768m -Xmx1024m'을 주석 처리하고 # Uncomment to enable FIPS 아래 줄의 주석 처리를 제거합니다.
      파일 조각은 다음과 같은 모양이어야 합니다.
      Environment=JRE_HOME=/usr/java/jre-vmware
      # Comment when enable FIPS
      # Environment='CATALINA_OPTS=-Xms768m -Xmx1024m'
      # Uncomment to enable FIPS
      Environment='SERVICE_CLASSPATH=$CATALINA_BASE/lib/ext/*'
      Environment='CATALINA_OPTS=-Xms768m -Xmx1024m -Djava.security.properties==/opt/vmware/dr-client/conf/vmware-override-java.security -Dorg.bouncycastle.jca.enable_jks=true -Dorg.bouncycastle.fips.approved_only=true'
    2. /opt/vmware/dr-client-plugin/conf/context.xml 파일에서 <Manager> 태그의 주석 처리를 제거합니다.
      태그가 있는 파일 조각은 다음과 같은 모양이어야 합니다.
      <!-- Uncomment to enable FIPS mode.          -->
      <Manager pathname="" secureRandomAlgorithm=""/>
    3. (선택 사항) 장치에 대해 FIPS가 이미 사용되도록 설정된 경우 dr-client-plugin 서비스를 다시 시작합니다.
      systemctl daemon-reload; systemctl restart dr-client-plugin
  8. 엄격 모드에서 REST API 서비스(dr-rest)를 시작합니다.
    1. /usr/lib/systemd/system/dr-rest.service를 편집합니다. 기존 Environment='CATALINA_OPTS=-Xms768m -Xmx1024m'을 주석 처리하고 # Uncomment to enable FIPS 아래 줄의 주석 처리를 제거합니다.
      파일 조각은 다음과 같은 모양이어야 합니다.
      Environment=JRE_HOME=/usr/java/jre-vmware
      # Comment when enable FIPS
      # Environment='CATALINA_OPTS=-Xms768m -Xmx1024m'
      # Uncomment to enable FIPS
      Environment='SERVICE_CLASSPATH=$CATALINA_BASE/lib/ext/*'
      Environment='CATALINA_OPTS=-Xms768m -Xmx1024m -Djava.security.properties==/opt/vmware/dr-client/conf/vmware-override-java.security -Dorg.bouncycastle.jca.enable_jks=true -Dorg.bouncycastle.fips.approved_only=true'
      
    2. /opt/vmware/dr-rest/conf/context.xml 파일에서 <Manager> 태그의 주석 처리를 제거합니다.
      태그가 있는 파일 조각은 다음과 같은 모양이어야 합니다.
      <!-- Uncomment to enable FIPS mode.          -->
      <Manager pathname="" secureRandomAlgorithm=""/>
    3. (선택 사항) 장치에 대해 FIPS가 이미 사용되도록 설정된 경우 dr-rest 서비스를 다시 시작합니다.
      systemctl daemon-reload; systemctl restart dr-rest
  9. 장치를 재부팅합니다.
    수정한 후 장치를 재부팅하기 전에 systemctl daemon-reload 명령이 한 번 이상 실행되었는지 확인합니다.
    참고: SSHD는 커널이 FIPS 모드를 사용하도록 설정했음을 읽고 이를 활성화합니다. sshd 구성에서는 아무것도 편집할 필요가 없습니다.

다음에 수행할 작업

FIPS 모드가 활성화되었는지 확인합니다.