Wie finde ich heraus, ob ein SSL-Zertifikat auf einem Server installiert ist? (mit PHP)

Lesezeit: 3 Minuten

Benutzer-Avatar
Irfan

Wie finde ich heraus, ob die Website SSL verwendet oder nicht? Ich arbeite an einem WP-Plugin für Live-Transaktionen und es ist wichtig, dass das Plugin überprüft, ob die Website (auf der das Plugin installiert ist) SSL verwendet oder nicht, und ich muss eine Warnmeldung auf der Checkout-Seite anzeigen, wenn die Website dies tut nicht auf SSL.

  • Ich denke, diese Frage ist verwandt mit stackoverflow.com/questions/4503135/…

    – Web-Entwickler

    5. April 2012 um 11:42 Uhr

  • Auf diese Weise wird das Skript im Grunde über das HTTPS-Protokoll abgefragt. Wenn das Skript von HTTPS angefordert wird, dann $_SERVER[‘HTTPS’] gesetzt ist und gleich ‘on’ ist. Aber ich versuche herauszufinden, dass SSL auf dem Server installiert ist, auf dem die Site live ist. Ich habe PHP-Skript gefunden uniapple.net/blog/?p=539#comment-2705 und ich habe es getestet, bin mir aber nicht sicher, ob es in allen Aspekten funktioniert? Danke

    – Irfan

    5. April 2012 um 12:38 Uhr

Sie können die überprüfen $_SERVER['HTTPS'] Variable.

function is_exist_ssl($domain){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://".$domain);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);

if(!curl_error($ch)){
$info = curl_getinfo($ch);
if($info['http_code'] == 200){
return true;
}
return false;
}else{
return false;
}
}

Verwendungszweck:

$domain = 'uniapple.net';

if(is_exist_ssl($domain)){
echo "SSL is enabled!";
}else{
echo "No SSL"; 
}

//usage ::
if(!isset($_SERVER['REDIRECT_HTTPS']) || $_SERVER['REDIRECT_HTTPS'] != 'on'){
if(is_exist_ssl($domain)){
header('location : https://'.$domain);
}
}

Benutzer-Avatar
André Gagnon

Da diese Frage alt ist und die Antworten etwas veraltet sind, dachte ich, ich würde mich einschalten!

Ich habe gesehen, dass Sie nach einem WordPress-Plugin gefragt haben. WordPress hat eine is_ssl() Funktion, um zu prüfen, ob eine Seite seit WordPress 2.6 SSL verwendet.

Hier ist ein Beispiel:


if ( is_ssl() ) {
  print_r('SSL is running!');
} else {
  print_r('Please install an ssl certificate!');
}

Wenn es sich um eine HTTPS-Anfrage handelt, wird der ‘HTTPS’-Wert im superglobalen $_SERVER-Array gesetzt und auf ‘on’ gesetzt. Wenn es sich nicht um eine HTTPS-Anfrage handelt, wird sie nicht gesetzt.

Um zu testen, ob es sich um eine HTTPS-Anfrage in PHP handelt, können Sie Folgendes tun:

    if( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) {
        ...
    }

Alternativ können Sie es als Konstante festlegen, wenn Sie wissen müssen, ob es sich mehrmals in Ihrem Code um eine HTTPS-Anfrage handelt:

define('IS_HTTPS_REQUEST', isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on');

Benutzer-Avatar
Bruno

Es gibt eine Reihe von Lösungen für dieses Problem, die in dieser Frage beschrieben werden. Wenn Sie Apache Httpd verwenden und den Pfad auf ein bestimmtes Präfix eingrenzen können, könnten Sie verwenden SSLRequireSSL innerhalb eines Location Richtlinie. Alternativ können Sie überprüfen $_SERVER['HTTPS'] in PHP, wenn es definiert ist (es kann vom Webserver abhängen, ist es aber normalerweise).

Konzentrieren Sie sich vor allem nicht zu sehr darauf, zu überprüfen, ob die von Ihnen bereitgestellte Seite über HTTPS bereitgestellt wird. Es liegt in der Verantwortung des Clients, dies zu überprüfen, denn bis er den Server erreicht, ist es zu spät: Er wurde möglicherweise bereits von einem MITM-Angreifer abgefangen (der die Anfrage möglicherweise sogar über HTTPS stellt, selbst wenn der echte Client dies getan hat nicht). Ich habe eine längere Erklärung zu diesem Problem in diese Antwort eingefügt. Aus Sicht der Benutzeroberfläche sollten Sie klarstellen, dass der Benutzer einen „sicheren“ Abschnitt betritt und es an ihm liegt, zu überprüfen, ob die nachfolgenden Anforderungen über HTTPS erfolgen.

Es ist nicht unbedingt eine schlechte Sache zu überprüfen, ob Ihr Server tatsächlich über HTTPS läuft, aber es hilft aus Sicherheitssicht nicht viel. Was wirklich zählt, ist, dass alle Links zu diesem sicheren Abschnitt verwendet werden müssen https:// (und darf nicht Verlassen Sie sich dazu auf das automatische Umschreiben von URLs).

1085560cookie-checkWie finde ich heraus, ob ein SSL-Zertifikat auf einem Server installiert ist? (mit PHP)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy