2012-07-30 79 views
0

我有一個運行在http上的應用程序,然後我試圖通過https創建登錄頁面。早期的apache web服務器用於通過ajp協議將請求轉發給作爲註冊工作者的tomcat。現在我在/etc/apache2/crt中添加了一個密鑰和證書,即ssl.key,ssl.crt。那裏還有一個certificate.csr文件。用於上述證書生成的命令是從http://www.akadia.com/services/ssh_test_certificate.html我還沒有完成第6步,因爲在/etc/apache2/sites-available有兩個文件:defaultdefault-ssl。我換了兩行default-sslApache WebServer + Tomcat + Spring + https

SSLCertificateFile /etc/apache2/crt/certificate.csr 
SSLCertificateKeyFile /etc/apache2/crt/ssl.key 

我也改變的tomcat server.xml在崗位8446接收的https:

<Connector port="8446" protocol="HTTP/1.1" SSLEnabled="true" 
      maxThreads="150" scheme="https" secure="true" 
      clientAuth="false" sslProtocol="TLS" 
      keystoreFile="/etc/apache2/crt/ssl" 
      keystorePass="password"/> 

我也改變web.xml,現在還包含:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Secure Login</web-resource-name> 
     <url-pattern>/login/*</url-pattern> 
    <!-- <url-pattern>/other/secure/stuff/*</url-pattern> --> 
    </web-resource-collection> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

我試過curl -Iv https://localhostcurl -Iv https://localhost:8446但出現以下錯誤:

About to connect() to localhost port 8446 (#0) 
* Trying 127.0.0.1... Connection refused 
* couldn't connect to host 
* Closing connection #0 
curl: (7) couldn't connect to host 

請讓我知道如何做到這一點。

+0

部分解決的答案:sudo a2ensite default-ssl並使用ssl.crt現在Apache正在443端口收聽。我希望它將其轉發給tomcat ...嘗試它.. – singhsumit 2012-07-31 11:23:07

回答

2

SSLCertificateFile應該指向你的ssl.crt文件而不是ssl.csr(它只是提交給你的證書頒發機構以申請證書......之後,CSR根本沒用)。

如果你有Apache httpd執行你的SSL終止(這就是爲什麼你將有SSLCertificateFile和其他指令在那裏),那麼你不需要在Tomcat中的任何額外設置來處理CONFIDENTIAL通信。

如果要將Tomcat配置爲接受HTTPS通信,那麼您的/etc/apache2/crt/ssl文件需要是Java密鑰庫,而不是Apache httpd使用的裸露證書文件。 Java密鑰庫更復雜,需要使用Java的keytool程序進行操作。

我強烈建議您閱讀Tomcat's SSL Howto,它爲您提供了有關如何正確設置密鑰庫並在Tomcat中對其進行配置的分步指導。

+0

我最初指出ssl.crt,然後我想也許我錯了。關於第二點,我感覺一樣,但不確定。那麼,tomcat只能通過ajp來聽apache?感謝您的答案,讓我試試你的建議..順便說一句,我希望阿帕奇做所有的東西,讓tomcat不知道https .. – singhsumit 2012-07-31 05:57:38

+0

我使它指向ssl.crt。從web.xml中刪除內容仍然沒有幫助。在瀏覽器上,我得到:錯誤102 - 「服務器拒絕連接。」 – singhsumit 2012-07-31 07:30:01

+0

只有你可以決定什麼對你自己的環境有意義:你可以選擇使用Apache httpd作爲前端Web服務器或不使用。 Tomcat是一個完美的Web服務器,並且在正確配置後,可以與Apache httpd在性能方面保持良好的競爭關係。如果配置Apache httpd更容易配置SSL(並從中獲得一些其他好處),那麼可以隨意將Apache httpd添加到SSL終端,並且只使用AJP連接這兩者。如果你不需要其他的Apache httpd,它可能是值得你一陣子從你的設置中消除它,只使用Tomcat。 – 2012-07-31 14:55:36