Tomcat

Java Web 服務適用於 http,但不適用於 https

  • March 29, 2013

我在我的網站上安裝了 SSL。我編寫了一個 java web 服務並將其部署在 public_html/WEB-INF/service 文件夾中。現在我可以通過 http 訪問我的服務(例如http://www.mydomain.com/services/myWebService?wsdl),但是當我通過 https 嘗試它時,它給了我錯誤 404。

這是虛擬主機配置

<VirtualHost 44.123.123.123:443>
   ServerName mydomain.com
   ServerAlias www.mydomain.com
   DocumentRoot /home/accountName/public_html
   ServerAdmin webmaster@mydomain.com
   UseCanonicalName Off
   CustomLog /usr/local/apache/domlogs/mydomain.com combined
   CustomLog /usr/local/apache/domlogs/mydomain.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
   ## User accountName # Needed for Cpanel::ApacheConf
   <IfModule mod_suphp.c>
       suPHP_UserGroup accountName accountName
   </IfModule>
   <IfModule !mod_disable_suexec.c>
       <IfModule !mod_ruid2.c>
           SuexecUserGroup accountName accountName
       </IfModule>
   </IfModule>
   <IfModule mod_ruid2.c>
       RUidGid accountName accountName
   </IfModule>
   ScriptAlias /cgi-bin/ /home/accountName/public_html/cgi-bin/
   SSLEngine on

   SSLCertificateFile /etc/ssl/certs/www.mydomain.com.crt
   SSLCertificateKeyFile /etc/ssl/private/www.mydomain.com.key
   SSLCACertificateFile /etc/ssl/certs/www.mydomain.com.cabundle
   CustomLog /usr/local/apache/domlogs/mydomain.com-ssl_log combined
   SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
   <Directory "/home/accountName/public_html/cgi-bin">
       SSLOptions +StdEnvVars
   </Directory> 

   # To customize this VirtualHost use an include file at the following location
   Include "/usr/local/apache/conf/userdata/ssl/2/accountName/mydomain.com/*.conf"

</VirtualHost>

我是否也必須為服務配置 SSL?我錯過了什麼?

謝謝

您寫道您嘗試使用該 URL 訪問伺服器http://www.mydomain.com/services/myWebService?wsdl,並且它已安裝在public_html/WEB-INF/service. 這兩個不匹配;路徑中s缺少或sURL 中有多餘內容。

但是,如果我們假設路徑應該包含s,則問題出在您的 VirtualHost 設置上:

DocumentRoot /home/accountName/public_html

如果您有文件/home/accountname/public_html/WEB-INF/services,那麼您需要使用 URL https://www.mydomain.com/WEB-INF/services/myWebService?wsdl,或者您需要將 DocumentRoot 更改為/home/accountName/public_html/WEB-INF. 現在的設置方式是,您的伺服器正在尋找您的網站 in/home/accountName/public_html/services而不是 in /home/accountName/public_html/WEB-INF/services

讓 SSL 看起來像 HTTP 版本的最佳建議是獲取兩個虛擬主機文件,然後執行diff vh-http.conf vh-ssh.conf以查看有什麼不同。您可以使用 SSL 忽略所有行,但如果有其他不同之處,那很可能是您的問題所在。

引用自:https://serverfault.com/questions/493240