2013-02-20 7 views
2

레일 응용 프로그램을 https : //로 변환하려고합니다. 테스트 목적으로 openssl을 사용하여 자체 서명 된 인증서를 만들었습니다. 나는 웹 서버로 nginx를 사용하고있다. 그런 다음이 인증서를 사용하여 nginx를 구성했습니다.자체 서명 된 인증서 체인을 사용하여 체인 된 인증서를 만들 수있는 방법

하지만 HTTPS를 보여줍니다 응용 프로그램을하면서 :이 웹 페이지 https://myapp.com가 크롬에 너무 많은 리디렉션을 초래하고 다른 브라우저도 리디렉션 보이고있다 // 주소 이전 만이 웹 페이지에 리디렉션 순환 오류가 있습니다 로 결과를 나타내는 문제.

너무 많은 연구 끝에이 문제를 해결하기 위해 체인화 된 인증서를 사용해야하는 것과 같은 단서를 발견했습니다. 그런 다음 인증서 체인을 만들려고했습니다. 제가 사용한 방법은 아래에 설명되어 있습니다.

openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key 
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem 

나는 그런 다음 필요에 따라, openssl.conf을 편집하고 두 개의 새로운 디렉토리를 생성

/etc/ssl/private 

/etc/ssl/certs 

및 ca.key에 ca.pem 복사 CA 및 newcerts 내부 /etc/ssl.

다음 명령을 실행하여 새 직렬 및 데이터베이스 파일을 제공하십시오.

sudo sh -c "echo '01' > /etc/ssl/CA/serial" 
sudo touch /etc/ssl/CA/index.txt 

다음 명령을 실행하여 클라이언트 인증서를 만들었습니다. 이 인증서는

openssl genrsa -out client.key 1024 
openssl req -new -key client.key -out client.csr 
openssl ca -in client.csr -out client.cer 

그런 다음 나는 두 번째 cerificate에서 3 cerificate가 client.cer을 의미 만든 것이 아닌 사용 ca.pem에서 다음을 따라 ca.pem에 따라 달라집니다 명령. > client.pem - -> client1.pem

어떻게

# Create a certificate request 
openssl req -new -keyout client1.key -out client1.request -days 365 

# Create and sign the certificate 
openssl ca -policy policy_anything -keyfile client.key -cert client.pem -out client1.pem -infiles client1.request 

내가

ca.pem 같은 인증서 체인을

[ usr_cert ] 
basicConstraints=CA:TRUE # prev value was FALSE 

이제 openssl.conf 옵션을 변경 이 3 개의 인증서를 묶어 체인 된 인증서를 올바르게 만들 수 있습니까? 나만의 방식으로 시도했지만 동일한 오류가 발생합니다.

누구든지 문제를 해결할 수 있도록 도와주십시오. 지난 1 주 동안 문제를 해결하고 있습니다.

감사 감사

+0

내가 알고있는 것처럼, 당신은하고 싶은 중 세 또는 ca.pem 및 client.pem을 포함하는 ASN.1의 덩어리를 포함하는 하나의 ASN.1의 블롭 (나는에 intermediary.pem를 호출 것 명확하게!!!) – mcr

답변

2

리디렉션 루프는 그 문제에 대한 인증서 체인 또는 인증서 형식과는 아무 상관이 없습니다. 웹 서버 구성 또는 응용 프로그램 논리에 오류가 있습니다.나는 당신이 HTTP에서 HTTPS로 리디렉션하려고하는 추측뿐만 아니라, HTTPS에서 제공되는 리디렉션, 그래서 이것은 루프에서 발생하고있다.

Google 크롬 및 다른 브라우저에서 캐시가 리디렉션되므로 제대로 문제를 해결하고 루프로 문제를 해결하기가 어려울 수 있습니다 (서버/앱 측면에서 문제를 해결하더라도 리디렉션 될 수 있음). 컬이 제대로 문제를 디버깅 할 수처럼 요청이 백엔드, 명확한 브라우저 캐시 또는 도구를 타격해야합니다.