كولد فيوجن CFHTTP I/O استثناء:نظير عدم مصادقة - حتى بعد إضافة موتس إلى Keystore

StackOverflow https://stackoverflow.com/questions/1613038

سؤال

أنا أعمل حاليا مع معالج الدفع.يمكنني تصفح دفع URL من الخادم ، لذلك ليس جدار حماية المسألة ، ولكن عند محاولة استخدام CFHTTP يمكنني الحصول على I/O استثناء:نظير عدم مصادقة.لقد قمت بتحميل وتثبيت أحدث الأمن سيرت في cacerts keystore وإعادة تشغيل را وأنا لا يزال الحصول على نفس الخطأ.ليس فقط أنا ركبت مقدمي cert ، ولكن أيضا 2 أخرى Verisign المصدق موتس في سلسلة الشهادات.سيرت هي واحدة من أحدث فئة 3 التحقق من الصحة الموسع موتس.

وقد أي شخص يأتي عبر هذا قبل و وجدت الحل ؟

هل كانت مفيدة؟

المحلول

وزميل لي وجدت ما يلي بعد تعاني من نفس المشكلة عند الاتصال إلى 3rd الطرف.

<الإضراب> <وأ href = "http://www.coldfusionjedi.com/index.cfm/2011/1/12/Diagnosing-a-CFHTTP-issue--peer-not-authenticated" يختلط = "نوفولو noreferrer "> http://www.coldfusionjedi.com/index.cfm/2011/1/12/Diagnosing-a-CFHTTP-issue--peer-not-authenticated

HTTPS: // www.raymondcamden.com/2011/01/12/Diagnosing-a-CFHTTP-issue-peer-not-authenticated/

واستخدمنا الحل المنصوص عليها في تعليق من قبل بيت فرايتاغ مزيد من أسفل الصفحة. كان يعمل، ولكن أعتقد أنه يجب استخدامها بحذر، لأنها تنطوي على إزالة حيوي وإضافة مرة أخرى في خاصية معينة من مزود JsafeJCE.

لمن أجل الأرشفة، وهنا هو المحتوى الأصلي التعليق بيت فرايتاغ ل:

<اقتباس فقرة>   

ولقد ضاقت هذه أسفل قليلا أبعد من ذلك، وإزالة   KeyAgreement.DiffieHellman من مزود RSA JsafeJCE (التي   يؤدي تنفيذ الشمس الافتراضية لاستخدامها بدلا من ذلك) طبقات ل   العمل، وربما لديها أقل من تأثير على الخادم الخاص بك من إزالة   سوف مقدم بأكمله. وإليك كيف تفعل ذلك:

<cfset objSecurity = createObject("java", "java.security.Security") />
<cfset storeProvider = objSecurity.getProvider("JsafeJCE") />
<cfset dhKeyAgreement = storeProvider.getProperty("KeyAgreement.DiffieHellman")>
<!--- dhKeyAgreement=com.rsa.jsafe.provider.JSA_DHKeyAgree --->
<cfset storeProvider.remove("KeyAgreement.DiffieHellman")>

Do your http call, but pack the key agreement if you want:

<cfset storeProvider.put("KeyAgreement.DiffieHellman", dhKeyAgreement)>
     

وأنا أحسب هذا من خلال استخدام SSLSocketFactory لخلق الشبكي   اتصال، التي وفرت أكثر قليلا من التفاصيل في تتبع المكدس، من   عند استخدام cfhttp:

yadayadayada Caused by: java.security.InvalidKeyException: Cannot
build a secret key of algorithm TlsPremasterSecret at
com.rsa.jsafe.provider.JS_KeyAgree.engineGenerateSecret(Unknown
Source) at javax.crypto.KeyAgreement.generateSecret(DashoA13*..) at
com.sun.net.ssl.internal.ssl.DHCrypt.getAgreedSecret(DHCrypt.java:166)
     

وسيكون أمرا رائعا إذا كان الاستثناء القيت من كولد فيوجن أقل قليلا   عام.

نصائح أخرى

هل إضافته إلى تخزين المفاتيح الصحيح؟ تذكر أن كولد فيوجن يستخدم انها المثال جافا الخاصة. قضيت عدة ساعات على ذلك مرة واحدة قبل أن نتذكر هذه الحقيقة. واحد تريده هو في مكان ما مثل / ColdFusion8 / وقت التشغيل / جري / ليب / الأمن /

ومحددة لكولد فيوجن 8 مع خادم الويب مع الأصفار خدمة تصميم المواقع الحديثة:

ويمكنني استخدام كولد فيوجن 8 على JDK 1.6.45 ولديه مشاكل مع إعطائي الصلبان فقط حمراء بدلا من الصور، وكذلك مع cfhttp ليس قادرا على الاتصال إلى خادم الويب المحلي مع خدمة تصميم المواقع.

وبلدي النصي اختبار لإنتاج مع كولد فيوجن 8 كان

<CFHTTP URL="https://www.onlineumfragen.com" METHOD="get" ></CFHTTP>
<CFDUMP VAR="#CFHTTP#">

وهذا أعطاني خطأ عام لا بأس به من "/ O استثناء I: الأقران لا مصدقة." وبعد ذلك حاول لإضافة شهادات الخادم بما في ذلك الجذور والشهادات المتوسطة للتخزين المفاتيح جافا، وكذلك تخزين المفاتيح كولد فيوجن، ولكن ذلك لم يساعد أبدا. ثم أنا تصحيحه مشكلة مع

java SSLPoke www.onlineumfragen.com 443

وحصل

javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair

و

Caused by: java.security.InvalidAlgorithmParameterException: Prime size must be
multiple of 64, and can only range from 512 to 1024 (inclusive)
    at com.sun.crypto.provider.DHKeyPairGenerator.initialize(DashoA13*..)
    at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:627)
    at com.sun.net.ssl.internal.ssl.DHCrypt.<init>(DHCrypt.java:107)
    ... 10 more

وبعد ذلك كان لي فكرة أن خادم الويب (اباتشي في حالتي) كان الأصفار حديثة جدا لخدمة تصميم المواقع ومقيدة جدا (qualys يسجل +) ويستخدم مفاتيح قوية HELLMANN ديفي مع أكثر من 1024 بت. من الواضح، كولد فيوجن وجافا جدك 1.6.45 لا يمكن إدارة هذا. وكانت الخطوة التالية في odysee التفكير في تركيب موفر الأمان بديل للجافا، وقررت لنطاط القلعة. انظر أيضا <لأ href = "http://www.itcsolutions.eu/2011/08/22/how-to-use-bouncy-castle-cryptographic-api-in-netbeans-or-eclipse-for-java-jse -projects / "يختلط =" noreferrer نوفولو "> http://www.itcsolutions.eu/2011/08/22/how-to-use-bouncy-castle-cryptographic-api-in-netbeans-or-eclipse-for -java-شبيبة المشاريع /

وبعد ذلك تحميل

bcprov-ext-jdk15on-156.jar

http://www.bouncycastle.org/latest_releases.html و تثبيته تحت C: \ jdk6_45 \ جري \ ليب \ تحويلة أو أي وقت مضى حيث جدك الخاص بك، في تثبيت الأصلي من كولد فيوجن 8 سيكون تحت C: \ JRun4 \ جري \ ليب \ تحويلة لكن يمكنني استخدام جدك أحدث (1.6.45) الواقعة خارج الدليل كولد فيوجن. من المهم جدا لوضع bcprov-تحويلة-jdk15on-156.jar في الدليل \ تحويلة (وهذا كلفني حوالي ساعتين وبعض الشعر ؛-) ثم أنا بتحرير ملف C: \ jdk6_45 \ جري \ ليب \ الأمن \ java.security (مع الدفتر وليس مع editor.exe!) وضعت في خط واحد لموفر جديد. بعد ذلك قائمة يشبه

#
# List of providers and their preference orders (see above):
#
security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.2=sun.security.provider.Sun
security.provider.3=sun.security.rsa.SunRsaSign
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=sun.security.mscapi.SunMSCAPI

و(انظر واحدة جديدة في الموضع 1)

وبعد ذلك إعادة تشغيل خدمة كولد فيوجن تماما. يمكنك ثم

java SSLPoke www.onlineumfragen.com 443 (or of course your url!)

ووالتمتع الشعور ... وبالطبع

ما هي ليلة وما في اليوم. نأمل أن هذا سيساعد (جزئيا أو كليا) لشخص هناك. إذا كان لديك أسئلة، فقط يرسل لي على المعلومات ... (المجال أعلاه).

حاول مع هذا الأمر في CMD

C:\ColdFusion9 untime\jre\bin> keytool -استيراد -keystore ../lib/الأمن/cacerts -الاسم المستعار uniquename ملف certificatename.cer

ملاحظة:يجب علينا أن نختار الصحيح keystore موجودة داخل مجلد الأمان ، كما أن هناك أخرى keystore الملفات موجودة داخل بن.إذا كنا سوف استيراد الشهادة إلى تلك متاجر مفتاح انها لن تعمل.

وماذا أنا فقط اكتشفت تمت الإشارة في هذا المقال: HTTP: //kb2.adobe كوم / من القانون الجنائي / 400 / kb400977.html وبعض الأماكن الأخرى بعد الكثير من الحفر.

إذا كنت تبحث في هذه المادة لديك على الأرجح إدراج الخاص بك شهادة "server.crt" في المواقع الجذرية المناسبة وربما كنت قد إدخالها في cacerts ملف في / ColdFusion9 / وقت التشغيل / جري / ليب / الأمن باستخدام القيادة

و\ColdFusion9\runtime\jre\bin\keytool -import -v -alias someServer-cert -file someServerCertFile.crt -keystore cacerts -storepass changeit

و(إذا لم تكن قد فعلت ذلك، أن تفعل ذلك الآن). كان الشيء الذي كان يشغل في ذلك وأنا إنشاء خدمة تصميم المواقع على بلدي المضيف المحلي حتى بعد القيام بهذه الخطوات كنت لا يزال الحصول على نفس الخطأ.

وكما اتضح، تحتاج إلى إدراج أيضا بك "server.crt" في ملف "trustStore" التي تقع عادة في / ColdFusion9 / وقت التشغيل / جري / ليب باستخدام الأمر

\ColdFusion9\runtime\jre\bin\keytool -import -v -alias someServer-cert -file someServerCertFile.cer -keystore trustStore -storepass changeit

ونأمل أن هذا سيوفر الوقت شخص.

وأستخدمه JRun. بعد محاولة الكثير من الاشياء المختلفة جئت عبر مقتطف من المعلومات التي كانت سارية المفعول في بلدي الإعداد. كنت قد بتكوين (1) HTTPS SSLService مع ملفي truststore الخاصة. وادى ذلك الى قطعة من المعلومات في الرابط التالي لتصبح مهمة.

http://helpx.adobe.com/ كولد فيوجن / كيلو بايت / استيراد وشهادات شهادة مخازن coldfusion.html

<اقتباس فقرة>   

ملحوظة: إذا كنت تستخدم JRun كخادم J2EE الأساسية (إما   تكوين الملقم أو متعدد الخدم / J2EE مع تكوين JRun)   ومكنت SSL لخادم ويب JRun الداخلي (JWS)، سوف   تحتاج إلى استيراد الشهادة إلى truststore المحددة في   ملف jrun.xml لJWS آمن بدلا من تخزين مفتاح JRE. بواسطة   افتراضيا، يسمى ملف "trustStore" ويقع عادة   تحت jrun_root / ليب لمتعدد الخدم / J2EE مع تكوين JRun   أو cf_root / وقت التشغيل / ليب لتكوين كولد فيوجن الخادم. أنت   استخدام نفس keytool جافا لإدارة trustStore.

وهنا مقتطفات من ملف jrun.xml بلدي:

<service class="jrun.servlet.http.SSLService" name="SSLService">
  <attribute name="port">8301</attribute>
  <attribute name="keyStore">/app/jrun4/cert/cfusion.jks</attribute>
  <attribute name="trustStore">/app/jrun4/cert/truststore.jks</attribute>
  <attribute name="name">SSLService</attribute>
  <attribute name="bindAddress">*</attribute>
  <attribute name="socketFactoryName">jrun.servlet.http.JRunSSLServerSocketFactory</attribute>
  <attribute name="interface">*</attribute>
  <attribute name="keyStorePassword">cfadmin</attribute>
  <attribute name="deactivated">false</attribute>
</service>

وبمجرد أن استيراد شهادة في هذا truststore (/app/jrun4/cert/truststore.jks) انها عملت بعد إعادة تشغيل كولد فيوجن.


و(1) HTTP: //helpx.adobe كوم / تراث / كيلو بايت / SSL-jrun على شبكة الانترنت على خادم connector.html

وإضافة سيرت لتخزين المفاتيح لا يعمل بالنسبة لي على CF9 المؤسسة.

وانتهى الأمر باستخدام علامة CFX، CFX_HTTP5.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top