2014-01-08 2 views
9

클라이언트 측 인증서를 통해 보호 된 내부 사이트에 액세스해야합니다. 그러므로 phantomjs를 사용하기 위해 나는 Firefox에서 사이트에 액세스하기 위해 사용하는 인증서를 내 보낸 다음 openssl 명령 줄을 사용하여 개인 키와 인증서로 변환했습니다. 나는 이제 phantomjs가 서버상의 페이지에 접근 할 때 그 인증서를 ssl 서버에 제시 할 것이다. 어떻게해야합니까?ssl 인증서를 phantomjs에 공급하는 올바른 방법은 무엇입니까

page = require('webpage').create() 
page.open('https://myprotectedsite/', function(status) { 
console.log(status); 
phantom.exit(); 
}) 
-;

나는 인증서 및 키

test.js를 넣어 한 경로 인/등/PKI이

phantomjs --ssl-certificates-path=/etc/pki --ignore-ssl-errors=yes --proxy=myproxy:myport test.js 

그냥이됩니다 시도했습니다

하지만 작동하지 않습니다. console.log (상태)는 항상 '실패'입니다.

무엇을해야합니까?

답변

4

나는 그 결정을 너무 찾습니다. 이 https://github.com/ariya/phantomjs/issues/10524

"--ssl-인증서 경로"구현되지 않습니다 - 그것은 CA 인증서

+0

감사합니다. 그 질문에 대한 대답입니다. 비록 적어도 부정적인 대답이지만 PhantomJS와 더 이상 시간을 보내지 않는 것을 알고 있습니다. –

8

당신이 github project에 볼 수 있습니다 구현있어이 기능을 위해 사용되며, 문제는 이미 아니다이다 실제 안정 릴리스 (2.0.0)에 포함되어 있지만 2.0.1 release에 포함될 예정입니다. 그 사이에 here에서 2.0.1 빌드를 다운로드 할 수 있습니다 (링크는 git 토론에서 가져온 것입니다).

나는 2.0.1 버전을 사용하려고 내가 정확하게 추적 명령을 사용하여 SSL 클라이언트 인증을 통과 사이트에 액세스 할 수 있습니다 PhantomJS 2.1 버전은이 기능을 포함하는 릴리스되었습니다 마지막으로 새로운

, 당신은 here 테스트에서 다운로드 할 수 있습니다 추적 명령을 사용하여 SSL 클라이언트 인증 :

phantomjs --ssl-client-certificate-file=C:\tmp\clientcert.cer 
      --ssl-client-key-file=C:\tmp\clientcert.key 
      --ssl-client-key-passphrase=1111 
      --ignore-ssl-errors=true 
      C:\tmp\test.js 

노트를

나는 이것을 Windows에서만 테스트한다.

나는 키 스토어로 PKCS12 파일을 사용하려고하지만이 형식은 작동하지 않습니다와 함께, 그래서 openssl 내가 추적 명령을 사용하여 인증서 및 개인 키를 추출하여 것으로 보인다 :

추출 인증서 --ssl-client-certificate-file 매개 변수

를 들어

openssl pkcs12 -nocerts -in a.p12 -out clientcert.key 

추가 --ssl-client-key-file 매개 변수에 대한

openssl pkcs12 -nokeys -clcerts -in a.p12 -out clientcert.cer 

추출 키 나는 --ignore-ssl-errors=true을 사용하여 서버 인증서 유효성 검증을위한 신뢰 저장소 구성을 피합니다.

스크립트로는 테스트를 사용합니다.JS 같은 포함 질문에 OP 쇼가 있습니다

page = require('webpage').create() 
page.open('https://myproject', function(status) { 
     page.render('C:/temp/connect.png'); 
     console.log(status); 
     phantom.exit(); 
}) 
+0

간단한 CLI 플래그로 이것을 추가 한 것이 정말 좋습니다. 1 년 전에이 문제에 대해 해 주신 모든 작업에 감사 드리며 몇 달 전 게시 한 CLI 플래그를 포함하도록 허용 된 답변을 업데이트하십시오.^_^ – stevenhaddox

+0

@stevenhaddox, 귀하의 의견에 감사드립니다. 불행히도 이것은 받아 들여지지 않는 답변입니다. :) 그리고 2015 년 첫 번째 개정판에 CLI 매개 변수를 추가했습니다. 최근에 제가 수신하고 upvote 때문에 형식을 더 잘 만들 수있는 답을 편집합니다. 최소한이 기능을 사용하는 것이 좋습니다. – albciff

+0

그렇게 했어! 나는 이것이 완전히 환영받은 변화이기 때문에 이전 형식으로 당신의 깃발을 완전히 간과했다! 좋은 일을 계속하십시오 :) – stevenhaddox

6

클라이언트 인증서 지원은 실제로 원래 허용 대답부터 구현되었습니다했다. 나는이 질문에 비틀 거릴 다른 사람들을 돕기 위해 이것을 게시하고있다. X509/PKI 인증서 지원을위한 매개 변수는 PhantomJS's CLI instructions에 있습니다.

phantomjs --ssl-certificates-path=/path/to/pki/rootCA.pem 
      --ssl-client-certificate-file=/path/to/pki/cert.pem 
      --ssl-client-key-file=/path/to/pki/cert.np.key 
관련 문제