POST'tan bazı verileri PHP kullanarak site A'dan B sitesine veriyorum. Site A'nın ticari bir SSL sertifikası var. B sitesi kendinden imzalı bir sertifikaya sahip olacak. Bu yapılabilir mi? Değilse, kısıtlamaları atlamak için ayarlayabileceğim PHP (veya Apache) içinde herhangi bir yapılandırma seçeneği var mı?POST isteği kendinden imzalı bir sertifikaya sahip
cevap
Muhtemelen A sunucusunda curl kullanıyorsunuz? Sertifika doğrulama işlemini devre dışı bırakmak için, kendinden imzalı sertifikaları etkinleştirecek bir çift seçenek var. Bağlantı hala şifreli olacak, ancak bu sunucu B güven mümkün olmayacaktır gerçekten sunucu B IS:
curlopt_ssl_verifypeer (checking the CA auth chain)
curlopt_ssl_verifyhost (hostname/certname match checks)
Örnek PHP kodu:
$ch = curl_init("https://example.com/example/path");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
PHP'yi (veya genel olarak istemci) yalnızca * özel * kendinden imzalı bir sertifikayı kabul edecek şekilde yapılandırmanın herhangi bir yolu var mı? Görünüşe göre bu, sertifikayı doğrulamaktan kesinlikle daha güvenli olur. –
Yapılabilir. PHP'de, POST gerçekleştirmek için cURL kullanıyorsanız, yalnızca CURLOPT_SSL_VERIFYPEER
ve CURLOPT_SSL_VERIFYHOST
seçeneklerini yanlış olarak ayarlamanız gerekir, böylece sertifika kendiliğinden imzalandığından başarısız olmaz.
tarayıcıyı soruyorsan Verileri POST etmek için, kullanıcı sertifikanın güvenilir olmadığına dair normal uyarıları alır.
PHP kodunuzdan POST gerçekleştirmek için cURL kullanıyorsanız, cURL'nin SSL denetimlerini devre dışı bırakmak istersiniz. Bir related question göre,
Sen
FALSE
içinCURLOPT_SSL_VERIFYPEER
veCURLOPT_SSL_VERIFYHOST
ayarlamak gerekir. Bu> iki ana çekmeyi devre dışı bırakmalıdır. İkisi de gerekli olmayabilir, ama bu en azından gitmene gerek.
Neden yapılıyorsa, ilk önce denemiyorsunuz? – samayo
Uygulama tamamlanmadığından ve B sitesi henüz ayarlanmadığından ve benim kontrolüm altında olmadığı için – Aaron