darksign Posted September 29, 2009 Report Share Posted September 29, 2009 Šei ir veids kā to dara iekš JAVA: import com.sun.net.ssl.internal.ssl.Provider; import java.io.PrintStream; import java.net.HttpURLConnection; import java.net.URL; import java.security.Security; import java.util.Properties; public class myClass { public myClass(MyObject object1) { try { String s = System.getProperty("java.version"); ..... ServerURL = ... proxyHost = ... proxyPort = ... httpsHandler = ... httpsCipher = ... keystoreFile = ... keystoreType = ... keystorePass = ... connectionTimeout = ... System.setProperty("javax.net.ssl.keyStore", keystoreFile); System.setProperty("javax.net.ssl.keyStoreType", keystoreType); System.setProperty("javax.net.ssl.keyStorePassword", keystorePass); System.setProperty("javax.net.ssl.trustStore", keystoreFile); System.setProperty("javax.net.ssl.trustStoreType", keystoreType); System.setProperty("javax.net.ssl.trustStorePassword", keystorePass); if(httpsHandler != null && httpsHandler.length() > 1) System.setProperty("java.protocol.handler.pkgs", httpsHandler); if(httpsCipher != null && httpsCipher.length() > 1) System.setProperty("https.cipherSuites", httpsCipher); if(proxyHost != null && proxyHost.length() > 1) { System.getProperties().setProperty("https.proxyHost", proxyHost); if(proxyPort != null && proxyPort.length() > 1) System.getProperties().setProperty("https.proxyPort", proxyPort); } if(connectionTimeout != null) System.setProperty("java.net.connectiontimeout", connectionTimeout); } catch(Exception exception) { System.err.println("error: configuration problems (" + exception.getMessage() + ")"); } } public void openConnection() { try { URL url = new URL(ServerURL); Conn = (HttpURLConnection)url.openConnection(); Conn.setDoOutput(true); } catch(Exception exception) { System.err.println("error: SSL connection problems (" + exception.getMessage() + ")"); } } String ServerURL; String proxyHost; String proxyPort; String httpsHandler; String httpsCipher; String keystoreFile; String keystoreType; String keystorePass; String connectionTimeout; HttpURLConnection Conn; } Man nepieciešams šo te uztaisīt ar PHP. Butībā nav skaidrs kā konkrētās rindas iebarot php curl vai kādai citai funkcijai iekš php: System.setProperty("javax.net.ssl.keyStore", keystoreFile); System.setProperty("javax.net.ssl.keyStoreType", keystoreType); System.setProperty("javax.net.ssl.keyStorePassword", keystorePass); System.setProperty("javax.net.ssl.trustStore", keystoreFile); System.setProperty("javax.net.ssl.trustStoreType", keystoreType); System.setProperty("javax.net.ssl.trustStorePassword", keystorePass); Es domāju šajā virzienā.. bet te kaut kas nestrādā: //megjinam piesleegties serverim ar shaadiem parametriem CURLOPT_SSLKEY => "/keystores/spec.keystore", // The name of a file containing a private SSL key. CURLOPT_SSLKEYPASSWD => "xxxparolexxx", // The secret password needed to use the private SSL key specified in CURLOPT_SSLKEY. CURLOPT_POSTFIELDS => $postfields, šeit ir pilnais kods: function get_curl($url, $postfields) { if (!function_exists('curl_setopt_array')) { function curl_setopt_array(&$ch, $curl_options) { foreach ($curl_options as $option => $value) { if (!curl_setopt($ch, $option, $value)) { return false; } } return true; } } $options = array( CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER => false, // don't return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_ENCODING => "", // handle all encodings CURLOPT_USERAGENT => "Firefox", // who am i CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 30, // timeout on connect CURLOPT_TIMEOUT => 60, // timeout on response CURLOPT_MAXREDIRS => 10, // stop after 10 redirects //megjinam piesleegties serverim ar shaadiem parametriem CURLOPT_SSLKEY => "/keystores/spec.keystore", // The name of a file containing a private SSL key. CURLOPT_SSLKEYPASSWD => "xxxparolexxx", // The secret password needed to use the private SSL key specified in CURLOPT_SSLKEY. CURLOPT_POSTFIELDS => $postfields, // The full data to post in a HTTP "POST" operation. //To post a file, prepend a filename with @ and use the full path. //This can either be passed as a urlencoded string like 'para1=val1¶2=val2&...' //or as an array with the field name as key and field data as value. If value //is an array, the Content-Type header will be set to multipart/form-data. ); $ch = curl_init( $url ); curl_setopt_array( $ch, $options ); //tikai no php 5 un jaunaakas versijas $content = curl_exec( $ch ); $err = curl_errno( $ch ); $errmsg = curl_error( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; } Bet rezultātā patreiz dabūju šādu kļūdas ziņojumu: [errmsg] => SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Ir kādas idejas? Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted September 29, 2009 Report Share Posted September 29, 2009 Man šķiet, ka Javiskā keystore satur visu - gan tavu privāto atslēgu, gan arī Trusted Certification Authority saknes sertifikātus. Šobrīd caur PHP, man šķiet, ka tu padod tikai savu privāto atslēgu, bet neesi definējis nevienu root sertifikātu kam uzticies ar kuru tad varētu būt parakstīts servera sertifikāts. Quote Link to comment Share on other sites More sharing options...
darksign Posted September 29, 2009 Author Report Share Posted September 29, 2009 (edited) javai es iedodu config failu kuraa ir vairaakas rindas: server_url=... keystore_file_path= password= tips=JKS utt.. un no turienes tiek panjemti.. nav nekaadi papildus parametri.. un man nav nevienu citu sertifikaatu failu, kaa tas ir "CA" gadiijumaa kur ir laikam 3 faili.. sertifikaats, atsleega, un veel chain fails...! kaa shos pashus pareizi noraadiit ieksh php? Edited September 29, 2009 by darksign Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted September 30, 2009 Report Share Posted September 30, 2009 JKS fails satur visus root CA sertifikātus + visus tavus privātos sertifikātus. Pamēģini izeksportēt ārā. Izeksportēt var, piemēram, ar IBMisko ikeyman. Pamēģini (testa nolūkos) noskaidrot, kas ir parakstītājs tam serverim, kuram slēdzies klāt. Un norādīt šī parakstītāja root CA PEM failu, kā parametru: CURLOPT_CAINFO => '/cels/rootCA/failu.crt'; Piemēram, lapai https://www.e-latvenergo.lv parakstītājs ir: VeriSign Class 3 Public Primary Certification Authority - G5 Tātad, lai nodibinātu savienojumu mums vajag, lai crt fails saturētu šo root sertifikātu. Iekopējam tur iekšā: -----BEGIN CERTIFICATE----- MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y 5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ 4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq -----END CERTIFICATE----- Un mēģinam slēgties klāt. Quote Link to comment Share on other sites More sharing options...
darksign Posted September 30, 2009 Author Report Share Posted September 30, 2009 paldies par padomu.. pameegjinaashu.. zinjoshu par rezultaatiem :) Quote Link to comment Share on other sites More sharing options...
darksign Posted October 5, 2009 Author Report Share Posted October 5, 2009 (edited) Pamēģini (testa nolūkos) noskaidrot, kas ir parakstītājs tam serverim, kuram slēdzies klāt. Un norādīt šī parakstītāja root CA PEM failu, kā parametru: CURLOPT_CAINFO => '/cels/rootCA/failu.crt'; Piemēram, lapai https://www.e-latvenergo.lv ... Es pamēģināju, šeit kods: <?php function print_arr($arr) { echo "<br />\n\n<xmp>\n\n"; print_r($arr); echo "\n\n</xmp>\n\n<br />"; } /** * Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an * array containing the HTTP server response header fields and content. */ function get_curl($url) { if (!function_exists('curl_setopt_array')) { function curl_setopt_array(&$ch, $curl_options) { foreach ($curl_options as $option => $value) { if (!curl_setopt($ch, $option, $value)) { return false; } } return true; } } $options = array( CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER => false, // don't return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_ENCODING => "", // handle all encodings CURLOPT_USERAGENT => "Firefox", // who am i CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 30, // timeout on connect CURLOPT_TIMEOUT => 60, // timeout on response CURLOPT_MAXREDIRS => 10, // stop after 10 redirects CURLOPT_CAINFO => 'www.e-latvenergo.lv.crt', ); $ch = curl_init( $url ); curl_setopt_array( $ch, $options ); //tikai no php 5 un jaunaakas versijas $content = curl_exec( $ch ); $err = curl_errno( $ch ); $errmsg = curl_error( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; } $url = "https://www.e-latvenergo.lv/"; $web = get_curl($url); print_arr($web); ?> Šeit rezultāts: Array ( [url] => https://www.e-latvenergo.lv/ [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0 [connect_time] => 0.016 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => 0 [upload_content_length] => 0 [starttransfer_time] => 0 [redirect_time] => 0 [errno] => 77 [errmsg] => error setting certificate verify locations: CAfile: www.e-latvenergo.lv.crt CApath: none [content] => ) Veids kā dabūju to crt failu: atvēru caur firefox vaļā https://www.e-latvenergo.lv/, tad nospiedu uz tā zaļā laukuma pie adreses kreisajā pusē, tur "More information" tad uzspiedu "View Certificate" un sadaļā "Details" nospiedu "Export..." un saglabāju crt failu. Šeit ir crt faila saturs (35 rindiņas, pēdējā ir tukša): -----BEGIN CERTIFICATE----- MIIF6jCCBNKgAwIBAgIQU3fUE4h+eRVq5mypwjNaYDANBgkqhkiG9w0BAQUFADCB vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew HhcNMDcxMjE5MDAwMDAwWhcNMDkxMjE4MjM1OTU5WjCCAVQxEzARBgsrBgEEAYI3 PAIBAxMCTFYxEjAQBgsrBgEEAYI3PAIBAhMBLTESMBAGCysGAQQBgjc8AgEBEwEt MRswGQYDVQQPExJWMS4wLCBDbGF1c2UgNS4oYikxFDASBgNVBAUTCzQwMDAzMDMy OTQ5MQswCQYDVQQGEwJMVjEPMA0GA1UECBMGTGF0dmlhMQ0wCwYDVQQHFARSaWdh MRYwFAYDVQQKFA1BUyBMYXR2ZW5lcmdvMTIwMAYDVQQLFClUZXJtcyBvZiB1c2Ug YXQgd3d3LnZlcmlzaWduLmNoL3JwYSAoYykwNTEiMCAGA1UECxMZQXV0aGVudGlj YXRlZCBieSBWZXJpU2lnbjEnMCUGA1UECxMeTWVtYmVyLCBWZXJpU2lnbiBUcnVz dCBOZXR3b3JrMRwwGgYDVQQDFBN3d3cuZS1sYXR2ZW5lcmdvLmx2MIGfMA0GCSqG SIb3DQEBAQUAA4GNADCBiQKBgQCyGT11zkNwqlzIvvRxkgpRjzdDA90nFmcbYgqg SB3qTRAUljpw3dVmSbd+MkAR6pO9II9RJeSxA1EDq8RdG1peCMlpYQW4HHIVG2Yn 0Vv/dHEaDXU3PPeoWIU0oTol3R0G9KoDFpHcJJQu7LEXTs7jKAnmv4Fde0raS6dL dniG1wIDAQABo4IBzTCCAckwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwQwYDVR0g BDwwOjA4BgtghkgBhvhFAQcXBjApMCcGCCsGAQUFBwIBFhtodHRwczovL3d3dy52 ZXJpc2lnbi5jaC9ycGEwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL0VWSW50bC1j cmwudmVyaXNpZ24uY29tL0VWSW50bDIwMDYuY3JsMCgGA1UdJQQhMB8GCCsGAQUF BwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBMB8GA1UdIwQYMBaAFE5DyB127zdTek/y WG+U8zji1b3fMG8GCCsGAQUFBwEBBGMwYTAkBggrBgEFBQcwAYYYaHR0cDovL29j c3AudmVyaXNpZ24uY29tMDkGCCsGAQUFBzAChi1odHRwOi8vRVZJbnRsLWFpYS52 ZXJpc2lnbi5jb20vRVZJbnRsMjAwNi5jZXIwbgYIKwYBBQUHAQwEYjBgoV6gXDBa MFgwVhYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4sh BRgwJhYkaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqG SIb3DQEBBQUAA4IBAQBusmroMpTEyADXJ8Np+dsCIvORLnrXzzRmjs1iODUaVbOZ VXRBR4L+YSaRXVQL9fhFaF5Hdw5EHbIRsJPcdAMmeZzpt05YzSxrcLBHHWkyruWE fGhHUwam1YJfNVgJr79dr4S15DUE+Y3T23xYmzxr6gGfYMFPwrlcmsMXkpVT0Y+e 4cR1WPNtZYXppU2wAOA7DSgXe3vzBtO2gpqrSQf8EfVkWPZwQb7txoTAJhHCtS2P G59rxaNO/FxFC7JVoj9VRfsA2ndVsltxkns9Siav5Itzl7szG7Au85pi5g2Ps4ld Tn6wjg0jeAw75XGWFVD/XoZEk5POLCXkSTtRSp0k -----END CERTIFICATE----- Kas tur nav pareizi, kapēc viņš neredz kontentu? Kā viņam pareizi iebarot to sertifikāta failu? P.S. Crt fails ir tai pašā direktorijā kur php fails. Edited October 5, 2009 by darksign Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted October 6, 2009 Report Share Posted October 6, 2009 Tu izeksportēji un izmantoji paša e-latvenergo sertifikātu, bet vajadzēja pašu augšējo - VeriSign Class 3 Public Primary Certification Authority - G5 (nu to, kuru iepriekšējā atbildē biju ielicis) Es šīm sertifikātu darbībām izmantoju šādus rīkus: FireFox spraudni CertViewerPlus Un no komandrindas openssl šādā formā: openssl s_client -CAfile /etc/ssl/certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem -showcerts -verify 10 -connect www.e-latvenergo.lv:443 FireFox parāda kādai būtu jābūt sertifikātu ķēdei e-latvenergo gadījumā: .VeriSign Class 3 Public Primary Certification Authority - G5 (šitas ir tas, kas jānorāda iekš CAfile) ...VeriSign Class 3 Extended Validation SSL SGC CA (vari arī šo pielikt klāt tajā pašā CAfile zem iepriekšējā) ......www.e-latvenergo.lv Savukārt, openssl (ja nenorāda parametru CAfile) parāda, ko faktiski serveris sūta (var atrast problēmas ar servera konfigurāciju, ja netiek sūtīta pilna/pareiza sertifikātu ķēde - Certificate Chain). Faktiski linuxī man ir fails ca-certificates.crt, kurš atrodas šeit: /etc/ssl/certs/ca-certificates.crt kurš satur visus saknes un vidutājsertifikātus uzticamajiem sertifikātu izdevējiem. Pamēģini norādīt šo failu kā CAfile. Quote Link to comment Share on other sites More sharing options...
darksign Posted October 6, 2009 Author Report Share Posted October 6, 2009 tnx, par skaidrojumu, sāku kaut ko saprast, bet ne līdz galam. Uzliku FF CertViewerPlus spraudni, apskatījos pem failus, izeksportēju un nokopēju pareizo, uztaisīju konekciju caur komandrindu, kā parādīji, viss ok, rādās ka konekcija ir. To pašu pamēģināju nenorādot sertifikāta failu, arī ir ok (nezinu kapēc tā...) rāda ka verified..., tad pamainīju komandu šādi "openssl s_client -verify 10 -connect www.e-latvenergo.lv:443" un atbildē dabūju ne vairs 10 kodu, bet 19 -> "Verify return code: 19 (self signed certificate in certificate chain)", vismaz rezultāts savādāks, sapratu to visu tā, ka ja nenorādu CA failu, tad openssl kaut vai tas sertifikāts nav self signed, bet gan trešās kompānijas izdots, vienalga ja neesmu norādījis savā pusē ka pieņemu, tad rāda self signed (pieļauju, ka FF to apstiprināšanu dara automātiski, ja ierauga pazīstamu izdevējfirmu) Labi, lai arī tur būtu caur to komandrindu, bet mērķis man ir to visu dabūt caur php kodu. Lai es varētu pieslēgties, nosūtīt post datus (curl) un saņemt atpakaļ atbildi (redzēt sourci). No sākuma gribēju izmēģināt ignorējot SSL prasības, pieliku parametrus: CURLOPT_SSL_VERIFYPEER => false, //Ja gadiijumaa apniik njemties, lai ignoree un iztiek bez handsheika CURLOPT_SSL_VERIFYHOST => false, Šie labi nostrādā uz latvenergo lapu, un viņam var nodot post datus, jo viņam ir po, ko es izmantoju, viņš atbalsta visu, ka tik klients atnāk līdz viņam, kaut vai pa nedrošu kanālu, un sourci varēju redzēt. Bet kad šo pašu mēģināju tur kur man vajag, tad nekā... serveris atbildēja, lai eju tējot... bez pareiziem sertifikātiem nekā nedabūšu (kas arī ir pareizi no drošības puses). Tad nu gribu to sourci uz latvenergo lapu dabūt neizmantojot CURLOPT_SSL_VERIFYPEER un CURLOPT_SSL_VERIFYHOST, jeb viņiem abiem jābūt ir true. Kuros curl-setopt parametros man jāiebaro viņam tas pem vai kāds cits sertifikāta fails? būšu ļoti pateicīgs par konkrētu atbildi :) Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted October 6, 2009 Report Share Posted October 6, 2009 Nu, tā par openssl un komandrindu: "Verify return code: 19 (self signed certificate in certificate chain)" Tā tam arī ir jābūt - viņš to saka nevis par e-latvenergo, bet gan par Verisign saknes sertifikātu, kurš tāpat kā jebkurš saknes sertifikāts ir self-signed - tā tam arī ir jābūt un tas ir ok. Vai pareizi saprotu, ka curlam ir jāautentificējas serverī ar klienta SSL sertifikātu? Respektīvi, ir pakalpojuma sniedzēja (vai kāda no sertifikatoru, kuriem pakalpojuma sniedzējs uzticas) izdots sertifikāts, kurš curlam jāizmanto, lai veidotu pieslēgumu? Quote Link to comment Share on other sites More sharing options...
darksign Posted October 6, 2009 Author Report Share Posted October 6, 2009 apmēram jā. Ir tā, ka sūtot pareizos post datus, es varu uztaisīt parastu html formu un nospiest submit, un es caur pārlūku redzu visu to ko vajag, pareizo atbildi. Ja iedodu nepareizus datus tad serveris atgriež 403 forbidden kļūdu (to viņš dara arī ja kaut kas nav kārtībā ar sertifikātiem utt.. t.i. uz visām kļūdām viena atbilde.. stulbi, bet tā viņš ir saprogrammēts). Es tā kā zinu pareizos datus, gribu viņus nosūtīt caur php, bet šis man vai nu saka ka kaut kas nav ar SSL sertifikātu (pati curl funkcija) vai arī ja izmantoju nedrošu savienojumu ar CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST uzliktiem kā false, tad vienmēr ir 403 kļūda. Praktiski man jau neko krutāku kā to pašu atkārtot, ko dara tas pārlūks šajā gadījumā nevajag (drošā savienojumā apmierināt servera prasības un saņemt atbildi). Bet praktiski man tas nesanāk... ceru ka problēmu apm saprati un varēsi palīdzēt. p.s. tas serveris ne vienā ne otrā gadījumā man nav sūtījis nekādus papildus sertifikāta failus, ko vajadzētu izmantot. Ir tikai tas, ko redz pārlūks pats. Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted October 6, 2009 Report Share Posted October 6, 2009 Man šķiet, ka problēma drīzāk ir tajā (man pašam ir tā gadījies), ka serveris atšuj sakarā ar to, ka netiek padoti visi tie parametri, ko parasti padod pārlūks... Pamēģini ar openssl no komandrindas padot visus savus datus un pārliecinies, ka serveris pareizi atbild. Piemēram pārlūks padod visus šos datus, kad vienkārši veru vaļā https://www.inauda.lv GET / HTTP/1.1 Host: www.inauda.lv User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Nezinu, kā to dara curl, bet man ir bijuši gadījumi, kad serveris atšuj, ja piemēram nenorādu HTTP/1.1 aiz GET... Quote Link to comment Share on other sites More sharing options...
darksign Posted October 6, 2009 Author Report Share Posted October 6, 2009 un kā šo te visu info iebarot curlam? Quote Link to comment Share on other sites More sharing options...
darksign Posted October 6, 2009 Author Report Share Posted October 6, 2009 (edited) Iebaroju curlam, ar CURLOPT_HTTPHEADER, bet nekā, rezultāts tas pats. Tātad vaina nav pārlūka parametros... vismaz es tā domāju. Bet tieši tajos sertifikātos... Edited October 6, 2009 by darksign Quote Link to comment Share on other sites More sharing options...
darksign Posted October 6, 2009 Author Report Share Posted October 6, 2009 vēl viena kļūda ko man atgriež: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted October 6, 2009 Report Share Posted October 6, 2009 Hmmm... Šo, taču tu jau esi lasījis: http://curl.haxx.se/docs/sslcerts.html Kas tieši šobrīd tev ir tajā CAcert failā? BTW, kas ir parakstītājs sertifikātam? Un vai ir pareiza ķēde uz servera? Vari pamēģināt šo rīku: http://www.digicert.com/help/ lai noskaidrotu, vai viss ir kārtībā ar servera konfigurāciju. Pārlūki ir mazāk piekasīgi par curliem/jakartām utt... ;) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.