আমি অ্যাপাচি টমক্যাটে কীভাবে SSLv3 সমর্থন অক্ষম করব?


20

আমি কেবলমাত্র টিএলএসভি 1 ব্যবহার করতে আমার অ্যাপাচি টমক্যাট সার্ভারটি পুনরায় কনফিগার করার চেষ্টা করছি। তবে এটি এখনও নির্দিষ্ট ব্রাউজার ব্যবহার করে এসএসএলভি 3 এ ফিরে আসছে।

আমি নীচের সেটিংসের সাথে <সংযোগকারী> ট্যাগ সেটআপ করেছি:

<Connector ...
       enableLookups="true" disableUploadTimeout="true"
       acceptCount="100"  maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       clientAuth="false" sslProtocol="TLS" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA" sslEnabledProtocols="TLSv1" />

আমি কি একটি কনফিগারেশন সেটিংস মিস করছি বা আমার উপস্থিত থাকা উচিত নয় এমন কিছু উপস্থিত রয়েছে?


ভি 3 নিয়ে সমস্যা কী? আমি ভেবেছিলাম যে ভি 1 এর সুরক্ষা সমস্যা রয়েছে।
এমডিপিসি

8
@ এমডিপিসি পুডেল এসএসএলভি 3 কে প্রভাবিত করে।
CoverosGene

2
টমকেট সংস্করণ? জেডিকে সংস্করণ? সাম্প্রতিক সংস্করণগুলিতে এসএসএলপ্রোটোকলটি ডিফল্টরূপে টিএলএস S
জাভিয়ার লুকাস 21

2
rmeisen: উত্তরগুলি আপনার টমক্যাট এবং জাভা সংস্করণগুলির উপর নির্ভর করে এবং যদি আপনি জেএসইএস আয়াতগুলি এজেপি ব্যবহার করে থাকেন তবে তার পরিবর্তিত হয়ে যাবে। পার্থক্যগুলি sslProtocols=TLSv1আয়াতগুলির মতো সূক্ষ্ম sslProtocol="TLS"(লক্ষ্য করুন s?)। আপনার টমকেট এবং জাভা সংস্করণ উল্লেখ করা আপনাকে পাগলামি থেকে রক্ষা করবে।
স্টিফান লাসিউস্কি

উত্তর:


12

টমক্যাট 5 এবং সংস্করণ 6 এর সংস্করণের উপর নির্ভর করে এসএসএলএনএবলড = "সত্য" সম্ভবত এটি কাজ করতে পারে না কারণ এটি মিড-রিলিজ যুক্ত হয়েছিল। এটি অতীতে পেতে আপনাকে কেবল নিম্নলিখিত সম্পাদনা করতে হবে: sslProtocols = TLS To: sslProtocols = "TLSv1, TLSv1.1, TLSv1.2"

অদ্ভুত বলে মনে হচ্ছে তবে এটি টিএলএস বললেও এটিতে এসএসএল 3 রয়েছে।

এটি আমাদের টমকেট 5.5.20 এবং আমাদের টমক্যাট 6 টি উদাহরণে এটি স্থির করেছে। -Greg

আমি বিশ্বাস করি আপনার যা করা দরকার তা হ'ল:

Jboss:

<Connector protocol="HTTP/1.1" SSLEnabled="true" 
       enableLookups="true" disableUploadTimeout="true"
       acceptCount="100"  maxThreads="200"
       scheme="https" secure="true" clientAuth="false" 
       keystoreFile="${jboss.server.home.dir}/conf/keystore.jks"
       keystorePass="rmi+ssl"
       sslProtocols = "TLSv1,TLSv1.1,TLSv1.2" />

সিফার স্যুট সংজ্ঞায় নিশ্চিত নয় তবে এসএসপ্লোটোকলগুলি কেবল TLSv1, TLSv1.1, TLSv1.2 এ সেট করা উচিত

আপনার টমক্যাট সংস্করণের উপর নির্ভর করে এটি অন্যান্য সম্ভাব্য সমাধানগুলি থেকে পৃথক হবে:

টমকেট 5 এবং 6

<Connector...
   enableLookups="true" disableUploadTimeout="true"
   acceptCount="100"  maxThreads="200" SSLEnabled="true" scheme="https" secure="true"
   clientAuth="false" sslEnabledProtocols = "TLSv1,TLSv1.1,TLSv1.2" />

** আরএইচইএল 5 ভিত্তিক ডিস্ট্রোজে টমক্যাট 6.0.38 এর আগে টমক্যাট 6 সংস্করণে নিম্নলিখিতটি প্রযোজ্য **

নোট করুন যে TLSv1.1,TLSv1.2জাভা by দ্বারা সমর্থিত, জাভা নয় Java দ্বারা জাভা running চালিত সার্ভারে এই নির্দেশাবলী যুক্ত করা নিরীহ, তবে TLSv1.1 এবং TLSv1.2 সক্ষম করবে না।

<Connector...
   enableLookups="true" disableUploadTimeout="true"
   acceptCount="100"  maxThreads="200" SSLEnabled="true" scheme="https" secure="true"
   clientAuth="false" sslProtocols = "TLSv1,TLSv1.1,TLSv1.2" />

টমকেট> = 7

<Connector...
       enableLookups="true" disableUploadTimeout="true"
       acceptCount="100"  maxThreads="200" SSLEnabled="true" scheme="https" secure="true"
       clientAuth="false" sslProtocols = "TLSv1,TLSv1.1,TLSv1.2" />

টমকেট এপিআর সংযোগকারী

<Connector...
               maxThreads="200"
               enableLookups="true" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               SSLEnabled="true" 
               SSLProtocol="TLSv1"
               SSLCertificateFile="${catalina.base}/conf/localhost.crt"
               SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" />

উপরে আপনার সংযোগকারী নির্দিষ্টকরণের কি পূরণ করতে পরিবর্তন করা হয়। সূত্র: https://access.redhat.com/solutions/1232233


1
এফওয়াইআই, sslEnabledProtocolsটমক্যাট on. এ আমাদের জন্য কাজ sslProtocols = "TLSv1,...."করেনি।
স্টিফান লাসিউস্কি

4

আমার অনুরূপ ব্যবহারের কেস রয়েছে, যা টমক্যাট 7 কে কেবলমাত্র টিএলএসভি 1.2 কঠোরভাবে ব্যবহার করতে সক্ষম করবে, টিএসএলএসভি 1.1 বা এসএসএলভি 3 এর মতো এসএসএল প্রোটোকলগুলিতে ফিরে আসবে না।

আমি ব্যবহার করছি: সি: \ অ্যাপাচি-টমক্যাট -7.0.64-64 বিট এবং সি: \ জাভা 64 \ jdk1.8.0_60।

এই নির্দেশনা অনুসরণ করে: https://tomcat.apache.org/tomcat-7.0-doc/security-howto.html । টমকেট এসএসএল সমর্থন সেটআপ করার জন্য তুলনামূলকভাবে সহজ।

অনেকগুলি রেফারেন্স থেকে আমি অনেক সংমিশ্রণ পরীক্ষা করেছি, শেষ পর্যন্ত আমি এমন 1 টি পেয়েছি যা কেবলমাত্র টিএলএসভি 1.2 গ্রহণের জন্য টমক্যাট 7 প্রয়োগ করবে। স্পর্শ করার জন্য 2 টি জায়গা প্রয়োজন:

1) সি তে: \ অ্যাপাচি-টমক্যাট -7.0.64-64 বিট \ কনফ \ সার্ভার.এক্সএমএল

<Connector port="8443" 
 protocol="org.apache.coyote.http11.Http11Protocol"
 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
 keystoreFile="ssl/.keystore" keystorePass="changeit"
 clientAuth="false" sslProtocol="SSL" sslEnabledProtocols="TLSv1.2" />

কোথায়

keystoreFile = স্থানীয় স্ব-স্বাক্ষরিত ট্রাস্ট স্টোর

org.apache.coyote.http11.Http11Protocol = জেএসএসআই বিআইও বাস্তবায়ন।

আমরা ব্যবহার করি না org.apache.coyote.http11.Http11AprProtocol, কারণ এটি ওপেনসেল দ্বারা চালিত। অন্তর্নিহিত ওপেনসেল আগের এসএসএল প্রোটোকলগুলিকে সমর্থন করতে ফিরে আসবে।

2) টমক্যাট শুরু করার সময়, নিম্নলিখিত পরিবেশের পরামিতিগুলি সক্ষম করুন।

set JAVA_HOME=C:\Java64\jdk1.8.0_60
set PATH=%PATH%;C:\Java64\jdk1.8.0_60\bin
set CATALINA_HOME=C:\apache-tomcat-7.0.64-64bit
set JAVA_OPTS=-Djdk.tls.client.protocols="TLSv1.2" -Dsun.security.ssl.allowUnsafeRenegotiation=false -Dhttps.protocols="TLSv1.2"

JAVA_OPTS সীমাবদ্ধতা প্রয়োজন, অন্যথায় টমক্যাট (যা জাভা 8 দ্বারা চালিত) আগের এসএসএল প্রোটোকলগুলিকে সমর্থন করতে ফিরে আসবে।

টমক্যাট শুরু করুন C:\apache-tomcat-7.0.64-64bit\bin\startup.bat

টমক্যাট স্টার্টআপ লগটিতে আমরা JAVA_OPTS প্রদর্শিত দেখতে পাচ্ছি।

Oct 16, 2015 4:10:17 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djdk.tls.client.protocols=TLSv1.2
Oct 16, 2015 4:10:17 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dsun.security.ssl.allowUnsafeRenegotiation=false
Oct 16, 2015 4:10:17 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dhttps.protocols=TLSv1.2

তারপরে, আমরা আমাদের সেটআপটি যাচাই করতে ওপেনসেল কমান্ড ব্যবহার করতে পারি। প্রথমে লোকালহোস্ট সংযুক্ত করুন: টিএলএসভি 1.1 প্রোটোকল দিয়ে 8443। টমক্যাট সার্ভার শংসাপত্রের সাথে জবাব দিতে অস্বীকার করেছে।

C:\OpenSSL-Win32\bin>openssl s_client -connect localhost:8443 -tls1_1
Loading 'screen' into random state - done
CONNECTED(000001C0)
5372:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:.\ssl\s3_pkt.c:362:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 0 bytes

লোকালহোস্ট সংযুক্ত করুন: ৮৪৪৪ টি টিএলএসভি ১.২ প্রোটোকলের সাহায্যে টমক্যাট সার্ভারহেলোকে শংসাপত্রের সাথে জবাব দেয়:

C:\OpenSSL-Win32\bin>openssl s_client -connect localhost:8443 -tls1_2
Loading 'screen' into random state - done
CONNECTED(000001C0)
depth=1 C = US, ST = Washington, L = Seattle, O = getaCert - www.getacert.com
verify error:num=19:self signed certificate in certificate chain
---
Certificate chain
0 s:/C=SG/ST=SG/L=Singapore/O=Xxxx/OU=Development/CN=Myself
   i:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
1 s:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
   i:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
---
Server certificate
-----BEGIN CERTIFICATE-----
(ignored)
-----END CERTIFICATE-----
subject=/C=SG/ST=SG/L=Singapore/O=Xxxx/OU=Development/CN=Myself
issuer=/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 2367 bytes and written 443 bytes

এটি প্রমাণ করে যে টমক্যাট কেবলমাত্র TLSv1.2 অনুরোধের জন্য কঠোরভাবে প্রতিক্রিয়া জানাবে।


খুব সুন্দর এবং পুরো উত্তর! যশ!
জেনি ডি

আমি খুঁজে পেয়েছি যে JAVA_OPTS=-Djdk.tls.client.protocols="TLSv1.2এটি প্রয়োজনীয় নয় (টমক্যাট 8.0.29, জাভা 1.8.0_74)। এটি এখানেও উল্লেখ করা হয়নি: wiki.apache.org/tomcat/Security/POODLE
পল


0

টমক্যাট 6.0.41 এ, আপনাকে ব্লকিং সংযোগকারীটি ব্যবহার করতে হবে যেহেতু এনআইওর একটি সেটিংগুলি উপেক্ষা করছে।

http://wiki.apache.org/tomcat/Security/POODLE

http://mail-archives.apache.org/mod_mbox/tomcat-users/201410.mbox/%3C5440F1C6.3040205@apache.org%3E

সংযোগকারী পোর্ট = "443" প্রোটোকল = "org.apache.coyote.http11.Http11 প্রোটোকল" ম্যাক্সথ্রেডস = "200" স্কিম = "https" সুরক্ষিত = "সত্য" এসএসএলএনএলড = "সত্য" ক্লায়েন্টআউথ = "ভুয়া"
কীস্টোর ফাইল = "টমক্যাট.জেঙ্কস" "কীস্টোরপাস =" পরিবর্তন "এসএসএলএনেবলডপ্রোটোকলস =" টিএলএসভি 1, টিএলএসভি 1.1, টিএলএসভি 1.2 "/>


0

টমক্যাট 5.5 এ আপনার অনাবন্ধিত প্যারামিটার ব্যবহার করা উচিত

protocols="TLSv1"

এই প্রোটোকল সংস্করণ অযত্নে ব্যবহার সীমাবদ্ধ করতে to


0

Jboss 4.0.3 SP1 (java 1.5 এর সাথে টমক্যাট 5.5) এ SSL 3 (পুডল) অক্ষম করতে আপনার কোডটি পরিবর্তন করুন change

<Connector port="443" address="${jboss.bind.address}" maxThreads="100" strategy="ms" maxHttpHeaderSize="8192" emptySessionPath="true" scheme="https" secure="true" clientAuth="false" keystoreFile="${jboss.server.home.dir}/conf/eCP.keystore" keystorePass="password" sslProtocol="TLS" protocols="TLSv1,TLSv1.1,TLSv1.2" />


0

নতুন টমক্যাটগুলির জন্য এসএসএলপ্রোটোকল এবং এসএসএলএবেবলডপ্রোটোকলস কম্বো ব্যবহার করুন :

<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocols="TLSv1,TLSv1.1,TLSv1.2" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" SSLEnabled="true" URIEncoding="UTF-8" keystorePass=""/>


0

সবার আগে, যেমন_ভিওরেল বলেছেন, এটি তা নয় sslProtocols, এটি sslProtocol। (কেন তার উত্তর নীচে নেমে গেল?)


টমক্যাট 7 এবং জাভা 7-তে আমার জন্য জেএসএসইsslProtocol নিম্নলিখিত কনফিগারেশনে কাজ করে না:

<Connector SSLEnabled="true" clientAuth="false" 
keyAlias="keyalias" keystoreFile="keystore" keystorePass="changeit" 
maxThreads="150" port="443" protocol="org.apache.coyote.http11.Http11Protocol" 
scheme="https" secure="true" sslProtocol="TLSv1,TLSv1.1,TLSv1.2" />

এটা বলে:

SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-443"]
java.io.IOException: TLSv1,TLSv1.1,TLSv1.2 SSLContext not available
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:465)
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:187)
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:398)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:646)
    ...
Caused by: java.security.NoSuchAlgorithmException: TLSv1,TLSv1.1,TLSv1.2 SSLContext not available
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
    at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156)
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSSLContext(JSSESocketFactory.java:478)
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:439)
    ... 19 more

তবে নিম্নলিখিতটি ঠিক কাজ করে:

<Connector SSLEnabled="true" clientAuth="false" 
keyAlias="keyalias" keystoreFile="keystore" keystorePass="changeit" 
maxThreads="150" port="443" protocol="org.apache.coyote.http11.Http11Protocol" 
scheme="https" secure="true" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" />

এপিআর
এসএসএল v3 অক্ষম করতে এবং TLSv1 প্রোটোকল সক্ষম করতে:

SSLProtocol="TLSv1"

TLSv1, TLSv1.1, TLSv1.2 প্রোটোকল সক্ষম করতে:

SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"

বা:

SSLProtocol="all"

দ্রষ্টব্য: "TLSv1.1", "TLSv1.2" মানগুলির জন্য টমক্যাট নেটিভ 1.1.32 এবং এটি সমর্থন করে টমকেটের একটি সংস্করণ প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.