2013-02-20 209 views
2

我试图将我的rails应用程序转换为https://工作。为了测试目的,我使用openssl创建了一个自签名证书。我使用nginx作为Web服务器。然后我使用这个证书配置了nginx。如何使用自签名证书链创建链接证书

但同时考虑应用它显示的https:之前的地址,但显示结果为 此网页有重定向循环//,该网页https://myapp.com导致过多的重定向在Chrome和其他浏览器也呈现出重定向的问题。

经过太多的研究,我发现需要使用链式证书来解决这个问题的线索。然后我试图创建证书链。我使用的方式解释如下。

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 

的我复制到ca.pem

/etc/ssl/certs 

和对的ca.key

/etc/ssl/private 

然后编辑openssl.conf按需求和创建了两个新目录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 

此证书取决于ca.pem

然后创建从第二cerificate一个第三cerificate装置client.cer并且不使用取决于ca.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 

,并改变了openssl.conf选项现在

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

我有一个证书链像

ca.pem - > client.pem - > client1.pem

如何我可以捆绑这三个证书来正确创建链式证书吗?我以我自己的方式尝试,但它显示相同的错误。

任何人都可以请求帮助解决这个问题,过去一个星期我正在解决这个问题。

感谢 问候

+0

据我所知,你希望有一个包含所有三个ASN.1 blob,或包含ca.pem和client.pem的ASN.1 blob(我将它称为intermediary.pem清楚!!!) – mcr 2013-08-09 16:17:24

回答

2

重定向循环无关与证书链或证书格式为此事。您在Web服务器配置或应用程序逻辑中都有错误。我猜你正尝试从http重定向到https,但重定向也是从https服务的,因此会导致循环。谷歌浏览器(以及其他浏览器在某种程度上)缓存重定向,因此可能很难正确调试并修复循环问题(即使您在服务器/应用程序端修复问题,它仍可能会重定向)。确保您的请求正在打到后端,清除浏览器缓存或像curl这样的工具来正确调试问题。