網頁

顯示具有 Tomcat 標籤的文章。 顯示所有文章
顯示具有 Tomcat 標籤的文章。 顯示所有文章

2015年9月12日 星期六

使用Chrome或Firefox發生:伺服器的暫時 Diffie-Hellman 公開金鑰不足

最近使用Chrome時查看問題時,原本寫好好的案子突然出現"伺服器的暫時 Diffie-Hellman 公開金鑰不足",一開始以為發生什麼大事,仔細查了一下才發現是Chrome更新版中針對ECDSA and DSS ciphers是要放棄不使用了。不過這下可好,Chrome及Firefox都不能用,程式沒當但等同是當了,仔細查了下,看到這篇:解決「伺服器的暫時 Diffie-Hellman 公開金鑰不足」,看起來是之前TLSv3的問題等造成後續處理。

查了下原本建好的設定
<Connector protocol="HTTP/1.1" port="8443" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" disableUploadTimeout="true"
                   acceptCount="100" scheme="https" secure="true"
                   SSLEnabled="true"
                   clientAuth="false" sslProtocol="TLS"
                   keystoreFile="{路徑}/ngss_cer/key.jks"
                   keyAlias="xxx"
                   keystorePass="xxxxxx"
                   truststoreFile="{路徑}/key.jks"
                   truststorePass="docsntnu" URIEncoding="UTF-8"  />


參考了ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY及SSL/TLS, ciphers, perfect forward secrecy and Tomcat,看起來只要加上ciphers我設定。更正設定如下:

<Connector protocol="HTTP/1.1" port="8443" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" disableUploadTimeout="true"
                   acceptCount="100" scheme="https" secure="true"
                   SSLEnabled="true"
                   clientAuth="false" sslProtocol="TLS"
                   ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                            TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,
                            TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,
                            TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
                   keystoreFile="{路徑}/ngss_cer/key.jks"
                   keyAlias="xxx"
                   keystorePass="xxxxxx"
                   truststoreFile="{路徑}/key.jks"
                   truststorePass="docsntnu" URIEncoding="UTF-8"  />

重啟Tomcat後就ok了。

參考網址:
Disabling SSLv3 and SSLv2 in Tomcat and JBoss Web
ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY
SSL/TLS, ciphers, perfect forward secrecy and Tomcat
服務器有弱短暫的Diffie-Hellman公開 (Server has a weak ephemeral Diffie-Hellman public)

2013年11月26日 星期二

Tomcat筆記- Error: The web application [/web] appears to have started a thread named [Thread-2] but has failed to stop it. This is very likely to create a memory leak.

紀錄一下。

昨天弄了個舊web site放上tomcat,卻一直出現底下訊息,無法成功執行

The web application [/web] appears to have started a thread named [Thread-2] but has failed to stop it. This is very likely to create a memory leak.

查了半天,我認為是跟class有關,卻發現都在討論jdbc,後來查到server.xml及context.xml少放了幾個jndi的設定。

這真是個讓人困惑的log!

參考網址:

2013年11月10日 星期日

Tomcat筆記-設定錯誤頁

有時希望在使用時別讓使用者看到Exception一類令人不懂的東西,這時就得將他們導向設定好的page,例如發生404時,導向網頁沒找到的訊息頁,tomcat的設定很容易,只要在project的web.xml中,servlet的設定後或檔案最後加入以下的設定,404.html放在WebContent下即可

<error-page>
    <error-code>404</error-code>
    <location>/404.html</location>
</error-page>

這樣重開機就好。

參考網址:
[JSP]替換Tomcat的Error Page
防止駭客偷你的信箱網址
用 mailto 寄信
Status codes

2013年8月28日 星期三

Tomcat筆記-在ie中無法直接下載rar

Tomcat中內建的mime type沒有rar,所以照下列步驟處理

Step1:cd {Tomcat安裝目錄}/conf
Step2:vim web.xml
Step3:在Default MIME Type Mappings的區塊中,加入底下的code
<mime-mapping>
    <extension>rar</extension>
    <mime-type>application/x-rar</mime-type>
</mime-mapping>


Step4: 重啟server
Step5: 清掉IE的cache,再試一次就ok了

2013年8月20日 星期二

Spring、J2EE學習筆記-更動Tomcat內的jvm options

想要更動tomcat取用的memory量,找半天找不到在哪設,查了下資料才知道在shell script中,步驟如下

Step 1: cd {Tomcat安裝目錄}/bin
Step 2: vim catalina.sh
Step 3: 加入以下(設定是參考Help: Tomcat crashing with "org.apache.jk.common.ChannelSocket processConnection")

#JAVA_OPTS="-server -d64" (我的server不是64位元,所以mark掉)
JAVA_OPTS="$JAVA_OPTS -Xms2048m -Xmx2048m"
JAVA_OPTS="$JAVA_OPTS -XX:PermSize=300m -XX:MaxPermSize=300m"
JAVA_OPTS="$JAVA_OPTS -XX:NewSize=1024m -XX:MaxNewSize=1024m"
JAVA_OPTS="$JAVA_OPTS -XX:TargetSurvivorRatio=90 -XX:SurvivorRatio=5 -XX:MaxTenuringThreshold=12"
JAVA_OPTS="$JAVA_OPTS -XX:+CMSClassUnloadingEnabled"


我其實主要只是想設定2048的memory,哈

參考網址:
Help: Tomcat crashing with "org.apache.jk.common.ChannelSocket processConnection"
tomcat jvm options
add jvm options in tomcat

Spring、J2EE學習筆記-org.apache.jk.common.MsgAjp processHeader 嚴重的: BAD packet signature 18245

查看到log有底下的訊息

2013/8/15 下午 10:00:57 org.apache.jk.common.MsgAjp processHeader
嚴重的: BAD packet signature 18245
2013/8/15 下午 10:00:57 org.apache.jk.common.ChannelSocket processConnection 嚴重的: Error, processing connection
java.lang.IndexOutOfBoundsException
at java.io.BufferedInputStream.read(BufferedInputStream.java:310)
at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:628)
at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:585)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:693)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:662)

查了下資料,發現還蠻多人有這狀況,主要是有人查了8009這個socket,用netstat -na看了下,也沒發現有process在用,這倒是讓我覺得有人在掃這個IP,不很好幾個小時一次,看了下資料都是在tomcat的server.xml中將<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />給mark掉即可,稍微看了下ajp是什麼

The Apache Tomcat Connector - AJP Protocol Reference
Apache JServ Protocol(wiki)

看起來是綁定web server和application server的binary protocol,細節沒測試不知道,猜是tomcat和apache綁定80有關,總之拿掉那行後看來是沒有exception了。

參考網址:

2012年8月23日 星期四

Tomcat筆記-建置https

這幾天在趕著要處理某個專案,要在Cent OS下建立測試環境,面臨到要在Tomcat上用HTTPS,主站上的Tomcat用的是5.x,測試站上用的是tomcat 6.0,除了要java檔要自動build之外,設定檔也不同,不過會選擇用6.0也是因為https的設定容易。

1. 產生keystore檔,這邊就不多說了,可以參考我列出的網址,記得要用JAVA/bin底下的keytool
指令:keytool -genkey -alias tomcat -keyalg RSA -keystore {檔案置放位置}/server.jks

2. 更動server.xml檔,此檔放在{tomcat目錄下}/conf
用8443當keyword,找到設定的位置,若沒有註解,用“<!-- -->”,註解起來,如下:

<!--
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
-->

加入成

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               keystoreFile="{你剛做好的keystore的檔案位置}" keystorePass="{密碼}"
               clientAuth="false" sslProtocol="TLS" />


3. restart tomcat
回到{tomcat目錄下}/ bin
指令: catalina.sh stop; atalina.sh start

這樣就可以了

參考網址:
http://ssl.wis.com.tw/guide/install_tomcat.asp