Novell eDirectory 인 LDAP 서버의 SSL 인증서를 원했습니다. 나는 인증서OpenSSL에서 LDAP SSL 인증서를 저장하는 방법
을 볼 수 LDAP에 연결하려면 openssl을 사용하고있는 OpenSSL s_client가 -connect 192.168.1.225:636
그냥 내가 어떤 인증서 형식 파일이을 절약 할 수있는 방법 인증서를 인쇄?
감사의 말로,
맑음.
Novell eDirectory 인 LDAP 서버의 SSL 인증서를 원했습니다. 나는 인증서OpenSSL에서 LDAP SSL 인증서를 저장하는 방법
을 볼 수 LDAP에 연결하려면 openssl을 사용하고있는 OpenSSL s_client가 -connect 192.168.1.225:636
그냥 내가 어떤 인증서 형식 파일이을 절약 할 수있는 방법 인증서를 인쇄?
감사의 말로,
맑음.
-----BEGIN CERTIFICATE-----
과 -----END CERTIFICATE-----
사이의 모든 내용 (이러한 구분 기호 포함)을 새 텍스트 파일 (일반적으로 확장자는 .pem
또는 .crt
)로 붙여 넣으십시오. 메모장, Gedit, Vim, Emacs (예 : 사용중인 시스템에 따라 다름)와 같이 자주 사용하는 텍스트 편집기를 사용할 수 있습니다.
다른 방법으로 파이프 할 수 here을 설명 sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
에 출력 :
echo -n | openssl s_client -connect 192.168.1.225:636 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ldapserver.pem
아니면 DER 또는 PEM 형식 중 하나에 필요할 경우 쉽게 iManager를 통해 공개 키와 개인 키를 내보낼 수 있습니다. (DER은 바이너리 형식이며 PEM은 base64로 인코딩 된 형식이므로 iManager에서 DER 또는 B64와 B64 ~ = PEM을이 컨텍스트에서 사용합니다)
SSL을 수집하고 저장할 수있는 도구가 있습니다/TLS 인증서는 LDAPS뿐 아니라 LDAP/STARTTLS도 사용합니다. 이것은 Java로 작성된 잘 알려진 InstallCert 프로그램의 개정판입니다.
그냥 다음과 같이 실행 :
java -jar installcert-usn-20131123.jar host_name:port
을하고 당신의 JRE 파일 트리에서 jssecacerts
키 스토어 파일에 당신을 위해 인증서를 저장합니다, 또한 현재 디렉토리에있는 extracerts
키 스토어 파일입니다. 그런 다음 Java keytool을 사용하여 인증서를 다른 형식으로 내보낼 수 있습니다.
내 블로그 페이지 Yet another InstallCert for Java, now with STARTTLS support을 방문하여 다운로드 및 지침을 환영합니다.
이 작업을 수행하는 데 ldapsearch를 사용하는 것이 좋습니다. whole process, 몇 줄,하지만이 그것의 요점입니다 :
ldapsearch -x -T ~/ -t -h your-edirectory-host.yourdomain.com -b "cn=Security" objectclass=nDSPKICertificateAuthority cACertificate
- 짐
내가 FTPS LDAP, IMAP, POP, 같은 어떤 SSL을 사용 프로토콜에서 인증서를 저장하는 것으로 가장 쉬운 방법 , https 등은 Chrome 브라우저를 사용하고 있습니다. 언급 한 프로토콜을 실행하는 서버가 다음과 같은 URL을 작성한다고 가정하십시오.
http : // : (예 : LDAP 포트가 10636 인 LDAP 서버는 https://example.com:10636입니다. 이 URL을 클릭하고 크롬 브라우저에서 인증서를 가져 오기 만하면됩니다. 아래 간단한 데모. 이 데모에서는 LDAP 서버가 자체 서명 된 인증서를 사용하고 있습니다. 사본에
을 클릭하여 파일 및 다음을 클릭하여 인증서를 저장합니다.
이 방법은 상관없이 프로토콜의 SSL에서 실행중인 모든 서버에 적용됩니다.
건배. StartTLS를을 사용하여 LDAP 연결을 통해 인증서 표시를 잡기 위해 찾고있는 사람들을 위해
Firefox에서도 거의 동일하게 작동합니다. IE에서는 먼저 인증서를 Windows 키 스토어에 저장해야합니다. 그러면 인증서를 파일로 내보낼 수 있습니다. – geoffc
:
나는 s_client가에 대한 -starttls를 사용하는 경우 LDAP를 지원하기 위해 OpenSSL과 re-submitted a patch 있습니다.
openssl s_client -connect servername:389 -starttls ldap -showcerts
편집 : 지원은 결국 this PR에서 합병을 - (아직 10/18/16의로 그 어느 것 같아요 그것을 만드는 경우) 그래서 결국이 를 작동합니다. C는 내 운명이 아니기 때문에 운 좋게도 다른 사람도 같이 달렸습니다.)
나는 또한 TCP 연결을 통해 STARTTLS 명령을 내린 후 SSL 인증서를 추출하는 PHP 함수를 작성했습니다. 그것은 쉽게 약간의 작업으로 다른 언어로 포팅 될 수있다 :
/**
* @param string $server The server name to connect to
* @param int $port The standard LDAP port
* @return array In the form of ['peer_certificate' => '', 'peer_certificate_chain' => [] ]
*/
function getLdapSslCertificates($server, $port = 389)
{
$certificates = [
'peer_certificate' => null,
'peer_certificate_chain' => [],
];
// This is the hex encoded extendedRequest for the STARTTLS operation...
$startTls = hex2bin("301d02010177188016312e332e362e312e342e312e313436362e3230303337");
$opts = [
'ssl' => [
'capture_peer_cert' => true,
'capture_peer_cert_chain' => true,
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
];
$context = stream_context_create($opts);
$client = @stream_socket_client(
"tcp://$server:$port",
$errorNumber,
$errorMessage,
5,
STREAM_CLIENT_CONNECT,
$context
);
@stream_set_timeout($client, 2);
@fwrite($client, $startTls);
@fread($client, 10240);
@stream_socket_enable_crypto($client, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
$info = @stream_context_get_params($client);
if (!$info) {
return $certificates;
}
openssl_x509_export($info['options']['ssl']['peer_certificate'], $certificates['peer_certificate']);
foreach ($info['options']['ssl']['peer_certificate_chain'] as $index => $cert) {
$certChain = '';
openssl_x509_export($cert, $certChain);
$certificates['peer_certificate_chain'][$index] = $certChain;
}
@fclose($client);
return $certificates;
}
위의 기능은 피어 인증서와 피어 인증서 체인을 포함하는 배열을 반환합니다. 그래서 지금처럼 사용할 수 있습니다 :
// Just pass it the server name
$certificates = getLdapSslCertificates('dc1.example.local');
// The certificates are in the array as strings in PEM format
echo $certificates['peer_certificate'].PHP_EOL;
foreach ($certificates['peer_certificate_chain'] as $cert) {
echo $cert.PHP_EOL;
}
'@'소음기의 무심코 사용. +1하세요! – bishop
감사 답변 –
접선 우려 : StartTLS를에 의해 반환 된 SSL 인증서를 검색하는 방법 (LDAPS이 비활성화 된 경우). A :'OpenSSL 0.9.8r 2011 년 2 월 8 일 '현재로서는 불가능합니다. OpenSSL은 아직 StartTLS에 대한 LDAP 프로토콜을 지원하지 않습니다. –