ECS: ECS에서 LDAPS를 통해 인증서를 설정하고 수락하는 방법
Summary: ECS에서 LDAPS(Lightweight Directory Access Protocol Secure)를 통해 인증서를 설정하고 수락하는 방법
Instructions
SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)를 통한 LDAP(Lightweight Directory Access Protocol)라고도 하는 LDAPS는 AD(Active Directory) 또는 LDAP 서버에 대한 LDAP 사용의 암호화된 트래픽 양식입니다.
LDAPS는 작동하는 LDAP 연결에 따라 달라집니다. ECS 관리 가이드 및 기술 자료 문서 ECS를 검토하십시오. UI
에서 AD 또는 LDAP 서버 연결을 설정하는 방법SSL 또는 TLS 통신을 사용하는 중요한 구성 요소는 인증서입니다. 사용된 인증서가 만료되거나 유효하지 않은지 확인합니다. 이는 전체 인증서 체인의 모든 인증서가 올바른데 중요합니다.
이와 관련하여 네트워크 팀에 확인하십시오.
LDAPS 인증서 체인을 업로드하고 LDAPS를 활성화하려면 다음 단계를 참고하십시오.
1. LDAPS 인증서 체인을 업로드하려면 노드 관리 IP 주소가 필요합니다.
2. UI 루트 사용자는 LDAPS 인증서 체인을 노드 관리 CLI 인터페이스에 업로드해야 합니다.
3ᄀ. 노드 관리 IP 주소
3B에 대한 XML 페이로드의 LDAPS 인증서 체인입니다. LDAPS는 노드 관리 IP 주소
4에 대한 XML 페이로드의 매개변수 설정을 활성화합니다. ECS Authentication Provider 페이지에서 IP 주소 대신 FQDN(Fully Qualified Domain Name)을 사용하여 LDAPS를 사용합니다.
5. 도메인 사용자 로그인을 테스트합니다.
3단계의
경우 IP 주소
대신 FQDN이 필요합니다. "SSL 인증서를 사용하는 경우 인증서에 연결된 연결과 일치하려면 인증서에 SAN(Subject Alternate Name)이 있어야 합니다. SAN에는 ECS의 구성과 일치하는 DNS 이름만 제공됩니다."
따라서 ECS authentication provider 페이지의 server URL 대화 상자에서 IP 주소 대신 FQDN을 사용하고 있는지 확인합니다.
본보기: ldaps://ad-or-ldap-fqdn-domain.com
위의 단계는 다음과 같습니다.
- LDAPS 인증서 체인을 업로드하려면 노드 관리 IP 주소가 필요합니다.
LDAPS 인증서 설정과 관련된 ECS 설정을 검토하려면 먼저 사용할 노드 관리 IP를 가져옵니다.
UI 관리를 위해 네트워크가 분리되어 있는 경우 "getrackinfo -n"은 "MGMT" 값을 표시합니다.
노드 MGMT IP 주소를 사용합니다. 복제 및 데이터 네트워크 분리는 다음 단계와 관련이 없습니다.
admin@node1:~> getrackinfo -n Named networks ============== Node ID Network Ip Address Netmask Gateway VLAN Interface 1 repl 10.xxx.xxx.11 255.255.254.0 xxx.xxx.xxx.xxx 14 public 1 mgmt 10.xxx.xxx.21 255.255.254.0 xxx.xxx.xxx.xxx 13 public 1 data 10.xxx.xxx.31 255.255.254.0 xxx.xxx.xxx.xxx 15 public 2 repl 10.xxx.xxx.12 255.255.254.0 xxx.xxx.xxx.xxx 14 public 2 mgmt 10.xxx.xxx.22 255.255.254.0 xxx.xxx.xxx.xxx 13 public 2 data 10.xxx.xxx.32 255.255.254.0 xxx.xxx.xxx.xxx 15 public 3 repl 10.xxx.xxx.13 255.255.254.0 xxx.xxx.xxx.xxx 14 public 3 mgmt 10.xxx.xxx.23 255.255.254.0 xxx.xxx.xxx.xxx 13 public 3 data 10.xxx.xxx.33 255.255.254.0 xxx.xxx.xxx.xxx 15 public 4 repl 10.xxx.xxx.14 255.255.254.0 xxx.xxx.xxx.xxx 14 public 4 mgmt 10.xxx.xxx.24 255.255.254.0 xxx.xxx.xxx.xxx 13 public 4 data 10.xxx.xxx.34 255.255.254.0 xxx.xxx.xxx.xxx 15 public
VDC에서 네트워크 MGMT가 분리되지 않은 경우 노드의 공용 IP 주소를 대신 사용합니다.
다음 예에서는 다음 위치에 MGMT가 없습니다. "getrackinfo -n"; 따라서 다음에서 공용 IP 주소를 사용합니다. getrackinfo 을 다음 단계의 관리 IP 주소로 지정합니다.
admin@node1:~> getrackinfo -n Named networks ============== Node ID Network Ip Address Netmask Gateway VLAN Interface admin@node1:~> admin@node1:~> getrackinfo Node private Node Public BMC Ip Address Id Status Mac Ip Address Mac Ip Address Node Name =============== ====== ====== ================= ================= ================= ================= ========= 192.1XX.2XX.1 1 MA a4:bf:xx:xx:xx:74 10.xx.xx.1 a4:bf:xx:xx:xx 192.1XX.2XX.101 provo-red 192.1XX.2XX.2 2 SA a4:bf:xx:xx:xx:c8 10.xx.xx.2 a4:bf:xx:xx:xx 192.1XX.2XX.102 sandy-red 192.1XX.2XX.3 3 SA a4:bf:xx:xx:xx:e0 10.xx.xx.3 a4:bf:xx:xx:xx 192.1XX.2XX.103 orem-red 192.1XX.2XX.4 4 SA a4:bf:xx:xx:xx:56 10.xx.xx.4 a4:bf:xx:xx:xx 192.168.219.104 ogden-red
2. LDAPS 인증서 체인을 노드 관리 CLI 인터페이스에 업로드하려면 UI 루트 사용자가 필요합니다.
획득한 관리 IP 주소를 사용하여 루트 사용자 토큰을 가져옵니다. 루트 사용자 비밀번호가 필요합니다(또는 UI 관리자 권한이 있는 UI 사용자).
curl -s -k -v -u <user> https://<NodeManagementIP>:4443/login 2>&1
# curl -s -k -v -u root https://10.xxx.xxx.21:4443/login 2>&1 Enter host password for user 'root': ...... < HTTP/1.1 200 OK < Date: Thu, 14 Jan 2021 13:51:24 GMT < Content-Type: application/xml < Content-Length: 93 < Connection: keep-alive < X-SDS-AUTH-TOKEN: BAAcdWhGbnVRVjd1WlpmR0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAgAC0A8= < X-SDS-AUTH-USERNAME: root < X-SDS-AUTH-MAX-AGE: 28800 < * Connection #0 to host 10.xxx.xxx.21 left intact <?xml version="1.0" encoding="UTF-8" standalone="yes"?><loggedIn><user>root</user></loggedIn>
출력이 "HTTP/1.1 200 OK"가 아닌 경우 "getrackinfo -n." 명령에서 UI 관리 네트워크가 분리되어 있는 경우 비밀번호와 IP 주소를 확인합니다.
루트 사용자 토큰을 사용하여 토큰 변수를 만듭니다.
# export TOKEN='X-SDS-AUTH-TOKEN: BAAcdWhGbnVRVjd1WlpmR0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAgAC0A8='
토큰 값을 테스트하려면 curl 용량을 확인하는 명령:
# curl -k -X GET -H "$TOKEN" https://10.xxx.xxx.21:4443/object/capacity | xmllint --format - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 176 100 176 0 0 249 0 --:--:-- --:--:-- --:--:-- 250 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cluster_capacity> <totalFree_gb>100657</totalFree_gb> <totalProvisioned_gb>447005</totalProvisioned_gb> </cluster_capacity>
3ᄀ. 노드 관리 IP 주소
3B에 대한 XML 페이로드의 LDAPS 인증서 체인입니다. LDAPS 활성화 매개변수 설정입니다. XML 페이로드에서 LDAPS 매개변수를 노드 관리 IP 주소에 수락합니다.
위 설명에서는 루트 사용자 토큰을 사용하여 LDAPS 인증서를 업로드할 수 있는 ECS UI 신뢰 저장소에 대한 curl 액세스 권한을 얻습니다.
"사용자 지정 LDAP 인증서 추가"에 대한 자세한 내용은 ECS 관리자 가이드를 참조하십시오.
를 사용하여 신뢰 저장소 설정을 가져옵니다. curl GET 명령을 사용하여 수행됩니다.
curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://<NodeManagementIP>:4443/vdc/truststore/settings | xmllint --format -
curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://10.xxx.xxx.21:4443/vdc/truststore/settings | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <truststore_settings> <accept_all_certificates>false</accept_all_certificates> </truststore_settings>
위의 예에서 truststore "accept_all_certificates" false로 설정됩니다. 즉, LDAPS 인증서를 신뢰할 수 없습니다.
이 "accept_all_certificates" 용어가 모호할 수 있지만 ECS에서 LDAPS 인증서를 사용할지 여부를 결정하는 데 계속 사용되는 플래그입니다.
사용자는 필요에 따라 true 또는 false로 설정할 수 있습니다. LDAPS 연결을 테스트하기 위해 이를 true로 설정하고 사용자의 로그인을 테스트하면 LDAPS 연결을 검증할 수 있습니다.
"accept_all_certificates" false로 돌아갑니다. 따라서 신뢰 저장소를 편집하는 경우 "accept_all_certificates" 나중에 사실로 돌아갑니다.
xml 페이로드와 함께 curl 명령을 사용하여 신뢰 저장소 설정을 변경하는 xml 파일을 생성합니다.
# sudo vi truststoresettings.xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <truststore_settings_changes> <accept_all_certificates>true</accept_all_certificates> </truststore_settings_changes> # cat truststoresettings.xml | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <truststore_settings_changes> <accept_all_certificates>true</accept_all_certificates> </truststore_settings_changes>
accept_all_certificates false로 설정하려면 페이로드 파일을 true 대신 false로 편집하고 페이로드 파일을 사용하여 PUT 명령을 실행합니다.
curl PUT 명령을 사용하여 xml 파일을 페이로드로 사용하여 curl 명령을 실행합니다.
# curl -s -k -X PUT -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://<NodeManagementIP>:4443/vdc/truststore/settings --data-binary @truststoresettings.xml
"accept_all_certificates"가 업데이트되었는지 확인하려면 curl GET 명령을 실행합니다.
# curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://10.xxx.xxx.21:4443/vdc/truststore/settings | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <truststore_settings_changes> <accept_all_certificates>true</accept_all_certificates> </truststore_settings_changes>
신뢰 저장소 설정뿐만 아니라 신뢰 저장소를 검사하려면 다음을 수행합니다.
# curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://<NodeManagementIP>:4443/vdc/truststore | xmllint --format -
빈 LDAP 인증서 신뢰 저장소의 예:
# curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://<NodeManagementIP>:4443/vdc/truststore | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <trusted_certificates/>
ECS에는 전체 인증서 체인, 루트 인증서, CA 인증서, 호스트 인증서 등이 필요하므로 여러 인증서가 필요할 수 있습니다.
truststore에 인증서를 추가하려면 사용자가 가지고 있는 인증서의 xml 파일을 만듭니다. 인증서는 .pem, .crt, .cer 등의 파일 형식일 수 있습니다.
인증서를 ECS에 업로드하려면 xml 페이로드 역할을 하는 xml 형식이어야 합니다.
인증서의 비 xml 형식 파일:
# cat cert.crt -----BEGIN CERTIFICATE----- MIIF1DCCA7ygAwIBAgIUdK2Ao2/45jYdQP0q6Dr1/ULmnc8wDQYJKoZIhvcNAQEL xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HhrV5ezjYHY= -----END CERTIFICATE-----
curl add 명령의 xml 형식은 다음과 같습니다.
# cat cert.xml | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <trusted_certificate_changes> <add> <certificate>-----BEGIN CERTIFICATE----- MIIG2TCCBMGgAwIBAgITMQAAAATxxxxxxxxxxxxxxxxxxxxxxxxxhkiG9w0BAQsF ADBbMRIwEAYKCZImiZPyLGQBGRYxxxxxxxxxxxxxxxxxxxxxxxxxFgR2aXRjMRMw ....................... pkHgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzxhlGh2TaTC xqz4T/sO4ggWs0Yz5nBmCZMDn6nxxxxxxrjX+ahXI= -----END CERTIFICATE-----</certificate> <certificate>-----BEGIN CERTIFICATE----- MIIG2TCCBMGgAwIBAgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxqhkiG9w0BAQsF ADBbMRIwEAYKCZImiZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxZFgR2aXRjMRMw EQYKCZImiZPyLGQBGRxxxxxxxxxxxxxxxxxxxxxxxxxxRW50ZXJwcmlzZS1DQTAe Fw0yMDA2MDgwNzQwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxIiMA0GCSqGSIb3DQEB .......................... 8wYIKWr2AqSKKxcBHxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3ykeRMZJk7VpQDQDLN feFI4rHZ4JOqDWttiHxxxxxxxxxxxxxxxxxxxxxxxxxxxhpXsxyjQIRvrtaCZVXz GR7Na7Ah1o+9MWenMExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGQlsQ47nZE2YgV -----END CERTIFICATE-----</certificate> </add> </trusted_certificate_changes>
인증서 페이로드 xml 형식을 업로드합니다.
curl -i -s -k -X PUT -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://10.xxx.xxx.21:4443/vdc/truststore --data-binary @cert.xml
인증서가 업로드되었는지 확인하려면 GET 명령을 실행합니다. ECS 신뢰 저장소의 끝 줄 문자는 "."입니다.
# curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://10.xxx.xxx.21:4443/vdc/truststore | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <trusted_certificates> <certificate>-----BEGIN CERTIFICATE----- MIIG2TCCBMGgAwIBAgITMQAAAATxxxxxxxxxxxxxxxxxxxxxxxxxhkiG9w0BAQsF ADBbMRIwEAYKCZImiZPyLGQBGRYxxxxxxxxxxxxxxxxxxxxxxxxxFgR2aXRjMRMw ....................... pkHgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzxhlGh2TaTC xqz4T/sO4ggWs0Yz5nBmCZMDn6nxxxxxxrjX+ahXI= -----END CERTIFICATE-----</certificate> <certificate>-----BEGIN CERTIFICATE----- MIIG2TCCBMGgAwIBAgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxqhkiG9w0BAQsF ADBbMRIwEAYKCZImiZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxZFgR2aXRjMRMw EQYKCZImiZPyLGQBGRxxxxxxxxxxxxxxxxxxxxxxxxxxRW50ZXJwcmlzZS1DQTAe Fw0yMDA2MDgwNzQwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxIiMA0GCSqGSIb3DQEB .......................... 8wYIKWr2AqSKKxcBHxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3ykeRMZJk7VpQDQDLN feFI4rHZ4JOqDWttiHxxxxxxxxxxxxxxxxxxxxxxxxxxxhpXsxyjQIRvrtaCZVXz GR7Na7Ah1o+9MWenMExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGQlsQ47nZE2YgV -----END CERTIFICATE-----</certificate> </trusted_certificates>
LDAPS 설정이 되돌려지지 않았는지 확인하려면 curl GET 명령을 실행합니다.
# curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://10.xxx.xxx.21:4443/vdc/truststore/settings | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <truststore_settings> <accept_all_certificates>false</accept_all_certificates> </truststore_settings>
false로 되돌린 경우 다시 true로 설정하십시오.,
신뢰 저장소가 변경될 때와 마찬가지로 설정이 "false"로 설정될 수 있습니다.
curl PUT 명령을 사용하여 xml 파일을 페이로드로 사용하여 curl 명령을 실행합니다.
# curl -s -k -X PUT -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://<NodeManagementIP>:4443/vdc/truststore/settings --data-binary @truststoresettings.xml
LDAPS 설정을 확인하려면 다음을 수행합니다.
# curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://10.xxx.xxx.21:4443/vdc/truststore/settings | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <truststore_settings> <accept_all_certificates>true</accept_all_certificates> </truststore_settings>
4. ECS Authentication Provider 페이지에서 IP 주소 대신 FQDN을 사용하여 LDAPS를 사용합니다.
LDAPS 인증서 체인이 ECS truststore에 업로드되고 accept_all_certificates 플래그를 true로 설정한 경우 ECS UI Authentication Provider 페이지로 이동하여 서버 URL을 에서 변경합니다.
< ldap://도메인 컨트롤러 IP 또는 FQDN>
대상
ldaps://< 도메인 컨트롤러 FQDN>
즉, 
LDAPS 프로토콜
이 있는 FQDNLDAPS 사용을 위한 FQDN이어야 합니다.
다음과 같이 IP 주소 대신 FQDN이 필요합니다."
SSL 인증서를 사용하는 경우 연결된 연결에 대해 일치시키려면 인증서에 SAN(Subject Alternate Name)이 인증서에 있어야 합니다. SAN에는 ECS의 구성과 일치하는 DNS 이름만 제공됩니다."
따라서 ECS 인증 공급자 페이지의 서버 URL 대화 상자에서 IP 주소 대신 FQDN을 사용하고 있는지 확인합니다.
즉:
ldaps://fqdn-domain-of-the-ad-or-ldap-server.com
포트:
LDAP의 기본 포트는 389입니다.
LDAPS의 기본 포트는 636입니다.
기본 포트가 아닌 경우 URL 형식:
< ldap://도메인 컨트롤러 IP 또는 FQDN:<>포트> 또는 ldaps://< 도메인 컨트롤러 FQDN:><포트>
5. 도메인 사용자 로그인을 테스트합니다.
그런 다음 도메인 사용자가 LDAPS를 통해 성공적으로 로그인할 수 있는지 LDAPS 프로토콜을 실행하는 동안 도메인 사용자 로그인을 테스트합니다.
따라서 ECS-LDAPS 프로토콜 연결이 작동합니다.
기타 정보:
필요한 경우:
truststore에서 인증서를 제거하려면 제거할 인증서와 일치하는 xml 파일을 만듭니다.
"add" 페이로드로 사용합니다. "remove":
# cat cert_remove.xml | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <trusted_certificate_changes> <remove> <certificate>-----BEGIN CERTIFICATE----- MIIG2TCCBMGgAwIBAgITMQAAAATxxxxxxxxxxxxxxxxxxxxxxxxxhkiG9w0BAQsF ADBbMRIwEAYKCZImiZPyLGQBGRYxxxxxxxxxxxxxxxxxxxxxxxxxFgR2aXRjMRMw ....................... pkHgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzxhlGh2TaTC xqz4T/sO4ggWs0Yz5nBmCZMDn6nxxxxxxrjX+ahXI= -----END CERTIFICATE-----</certificate> <certificate>-----BEGIN CERTIFICATE----- MIIG2TCCBMGgAwIBAgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxqhkiG9w0BAQsF ADBbMRIwEAYKCZImiZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxZFgR2aXRjMRMw EQYKCZImiZPyLGQBGRxxxxxxxxxxxxxxxxxxxxxxxxxxRW50ZXJwcmlzZS1DQTAe Fw0yMDA2MDgwNzQwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxIiMA0GCSqGSIb3DQEB .......................... 8wYIKWr2AqSKKxcBHxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3ykeRMZJk7VpQDQDLN feFI4rHZ4JOqDWttiHxxxxxxxxxxxxxxxxxxxxxxxxxxxhpXsxyjQIRvrtaCZVXz GR7Na7Ah1o+9MWenMExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGQlsQ47nZE2YgV -----END CERTIFICATE-----</certificate> </remove> </trusted_certificate_changes>
페이로드 파일, 즉 add 또는 remove를 사용하려면 다음 명령을 사용합니다.
# curl -s -k -X PUT -H Content-Type:application/xml-H "$TOKEN" -H ACCEPT:application/xml https://10.xxx.xxx.21:4443/vdc/truststore --data-binary @cert_remove.xml
페이로드가 성공했는지 확인하려면 GET 명령을 실행합니다.
# curl -s -k -X GET -H Content-Type:application/xml -H "$TOKEN" -H ACCEPT:application/xml https://10.xxx.xxx.21:4443/vdc/truststore | xmllint --format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <trusted_certificates/>
제공된 인증서와 일치하지 않는 LDAPS 서버가 확실하지 않은 경우 다음 명령을 실행하여 일치하는 인증서에 대한 LDAPS 서버 요청의 예상 응답을 확인합니다.
"verify error:num=21:unable to verify the first certificate"명령을 수행할 수 있는 충분한 공간이 있어야 합니다.
이 예에서 LDAPS 서버는 타사 인증서가 아닌 자체 서명된 인증서이므로 자체 서명되었다는 추가 경고가 생성될 수 있습니다.
# sudo openssl s_client -connect LDAPS_server_IP:636 < /dev/null
CONNECTED(00000003)
depth=0 CN =
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN =
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
........
---
Server certificate
-----BEGIN CERTIFICATE-----
.......
A cert that it expects.
.......
-----END CERTIFICATE-----
No client certificate CA names sent
Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms: RSA+SHA512:ECDSA+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1
Shared Requested Signature Algorithms: RSA+SHA512:ECDSA+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1
Peer signing digest: SHA1
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 2223 bytes and written 487 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
.......................
SRP username: None
Start Time: 1610452553
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
---
DONE
LDAPS 서버에 연결된 인증서 파일을 확인하고 사용할 일치하는 인증서가 있는지 확인합니다. 즉, 반환 코드 확인: 0 (ok):
# openssl s_client -connect LDAPS_server_IP:636 -CAfile /home/admin/cert_file_to_be_used.crt
CONNECTED(00000003)
.......
---
Server certificate
-----BEGIN CERTIFICATE-----
.....
.....
-----END CERTIFICATE-----
.......
---
No client certificate CA names sent
Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms: RSA+SHA512:ECDSA+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1
Shared Requested Signature Algorithms: RSA+SHA512:ECDSA+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1
Peer signing digest: SHA1
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 2223 bytes and written 487 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
.........
Verify return code: 0 (ok)
---
이를 확인하려면 다음 명령을 사용합니다.
# cat /home/admin/cert.crt | openssl x509 -dates -noout notBefore=Jan 12 13:43:52 2021 GMT notAfter=Jan 12 13:43:52 2022 GMT
명령 예제의 JSON 버전입니다.
위의 XML 명령을 사용하지 않는 경우(참고: XML을 사용하는 것이 좋음):
curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://<NodeManagementIP>:4443/vdc/truststore/settings
curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore/settings
{"accept_all_certificates":false}
JSON 페이로드와 함께 curl 명령을 사용하여 신뢰 저장소 설정을 변경하는 JSON 파일을 생성하려면 다음을 수행합니다.
# sudo vi truststoresettings.json
# sudo cat truststoresettings.json
{"accept_all_certificates": "true"}
Python의 json.tool 모듈은 JSON 파일 형식의 유효성을 검사할 수 있습니다. 오류가 있는 경우 파일이 JSON 파일이 아닐 수 있습니다. 이 예제에서는 오류가 없으며 형식이 지정된 JSON 파일이 되도록 파일을 출력합니다.
# python -m json.tool truststoresettings.json
{
"accept_all_certificates": "true"
}
curl PUT 명령을 사용하여 JSON 파일을 페이로드로 사용하여 curl 명령을 실행합니다.
# curl -s -k -X PUT -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://<NodeManagementIP>:4443/vdc/truststore/settings -d @truststoresettings.json
XML 페이로드 PUT은 curl 명령에서 --data-binary를 사용하는 반면 JSON 페이로드 PUT은
-d curl 명령에서 다음을 수행합니다.
--data-binary
(HTTP)를 사용합니다. 이렇게 하면 추가 처리 없이 지정된 대로 정확하게 데이터를 게시합니다.--data-ascii aka -d
(HTTP)를 사용합니다. 이 별칭은 -d, --data을 클릭합니다.
업데이트되었는지 확인하려면 curl GET 명령을 실행합니다.
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore/settings
{"accept_all_certificates":true}
이제 LDAPS 인증서가 허용되는 ECS UI에서 도메인 사용자의 로그인을 테스트합니다.
신뢰 저장소를 검사하려면 다음을 수행합니다.
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://<NodeManagementIP>:4443/vdc/truststore
빈 LDAP 인증서 신뢰 저장소의 예:
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.xxx.21:4443/vdc/truststore
{"certificate":[]}
curl add 명령의 JSON 형식으로, 줄 바꿈 문자가 \n 및 \r\n으로 바뀐 한 줄 파일입니다.
{"add":["-----BEGIN CERTIFICATE-----\nxxxxx\r\n---END CERTIFICATE-----"]}
# cat cert.json
{"add":["-----BEGIN CERTIFICATE-----\nMIIF1DCCA7ygAwIBAgIUdK2Ao2/45jYdQP0q6Dr1/ULmnc8wDQYJKoZIhvcNAQEL\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nHhrV5ezjYHY=\r\n---END CERTIFICATE-----"]}
ECS 관리 가이드의 "Add custom LDAP certificate"를 참조하십시오. 이 명령을 사용하여 다음을 추가하거나 제거합니다.
# curl -s -k -X PUT -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore -d @cert.json
업로드를 확인하려면 다음을 수행합니다.
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.xxx.21:4443/vdc/truststore
{"certificate":["-----BEGIN CERTIFICATE-----\nMIIF1DCCA7ygAwIBAgIUdK2Ao2/45jYdQP0q6Dr1/ULmnc8wDQYJKoZIhvcNAQEL\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nHhrV5ezjYHY=\r\n---END CERTIFICATE-----"]}
LDAPS 설정이 되돌려지지 않았는지 확인하려면 curl GET 명령을 실행합니다.
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore/settings
{"accept_all_certificates":false}
false로 되돌린 경우 다시 true로 설정합니다. 신뢰 저장소가 변경되면 설정이 "false"로 설정될 수 있습니다.
curl PUT 명령을 사용하여 JSON 파일을 페이로드로 사용하여 curl 명령을 실행합니다.
# curl -s -k -X PUT -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://<NodeManagementIP>:4443/vdc/truststore/settings -d @truststoresettings.json
LDAPS 설정을 확인하려면 다음을 수행합니다.
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore/settings
{"accept_all_certificates":true}
truststore에서 인증서를 제거하려면 제거할 인증서와 일치하는 JSON 파일을 생성하되 페이로드로 "add" 대신 "remove":
# cat cert.json
{"remove":["-----BEGIN CERTIFICATE-----\nMIIF1DCCA7ygAwIBAgIUdK2Ao2/45jYdQP0q6Dr1/ULmnc8wDQYJKoZIhvcNAQEL\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\nHhrV5ezjYHY=\r\n---END CERTIFICATE-----"]}
추가 또는 제거하려면 다음 명령을 사용합니다.
# curl -s -k -X PUT -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore -d @cert.json
업로드를 확인하려면 다음을 수행합니다.
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.xxx.21:4443/vdc/truststore
{"certificate":[]}