SSL für gemischte Inhalte/unsichere Inhalte [duplicate]

Lesezeit: 5 Minuten

SSL fur gemischte Inhalteunsichere Inhalte duplicate
Die bescheidene Ratte

Ich habe derzeit folgende Probleme

Mixed Content: The page at 'https://www.example.com/' was loaded over HTTPS, but requested an insecure stylesheet

Dies ist eine WordPress-Website auf einem Centos-Server mit httpd Eingerichtet.

Ich habe folgendes virtuelles Host-Setup in `http.conf:

NameVirtualHost *:80
NameVirtualHost *:443


<VirtualHost *:443>
    DocumentRoot /var/www/html/example
    ServerName www.example.com
    ServerAlias example.com
    SSLEngine on
    SSLCACertificateFile /etc/httpd/conf/ssl.crt/intermediate.crt
    SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    Redirect / https://www.example.com/
</VirtualHost>

In meinem httpd.conf ich habe mich verändert AllowOverride an alle, also sieht es so aus:

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Das kann ich bestätigen htaccess funktioniert, da ich das iTheme-Sicherheits-Plugin verwende, und dies funktioniert wie erwartet, auch wenn ich etwas Müll in die htacces Ich erhalte wie erwartet einen Server-Fehlkonfigurationsfehler.

Ich habe beide WordPress-URLs im Dashboard zur Verwendung geändert https anstatt http.

Sobald dies alles erledigt war, konnte ich über HTTP auf die Website zugreifen, auf die HTTPS-Version der Website umgeleitet werden und die Website sehen. In der Konsole erhalte ich jedoch den Fehler bezüglich gemischter Inhalte und das Schild des Vorhängeschlosses wird gelb oder rot durchgestrichen angezeigt, im Gegensatz zum gewünschten Grün.

Es gibt ein paar Dateien, die ein Problem darstellen, und ich weiß zum Beispiel, dass ich die zu verwendenden URLs manuell ändern kann https im Gegensatz zu http. So wie ich es verstehe, kann ich die URL wie folgt ändern und dadurch wird der Link einfach an das aktuell verwendete Protokoll angepasst:

<img src="https://www.example.com/image.jpg" />

Ich habe auch gesehen, dass wenn eine Ressource nicht verfügbar ist vorbei https Ich kann einfach folgendes tun:

https://example.com/imageserver?url=http://otherdomain.com/someimage.jpg&hash=abcdeafad

Ich versuche jedoch, einen Weg zu finden, all dies auf einmal zu beheben htaccess (Ich bin mir sicher, dass ich das schon einmal gemacht habe, aber meine Snippets funktionieren bei mir nicht).

Es gibt zwei Hauptausschnitte, die ich verwendet habe, um alles zu erzwingen httpsdas erste ist:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

#These Lines to force HTTPS
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Der zweite ist von Dave Walsh:

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

Beides scheint mein Problem jedoch nicht zu lösen. Vorsichtshalber habe ich die neu gestartet httpd Service nach jeder Änderung sogar htaccess Änderungen, die keinen Neustart erfordern sollten, die Situation bleibt jedoch dieselbe. Kann mich jemand in die richtige Richtung weisen?

  • Ändern RewriteRule ^/(.*) zu RewriteRule ^(.*) wenn dies in Ihrer htaccess-Datei steht.

    – hjpotter92

    18. September 2015 um 11:10 Uhr

  • @ hjpotter92 Vielen Dank für die Antwort, ich habe die Zeilen wie folgt geändert #These Lines to force HTTPS RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L] Leider spielt es sich immer noch nicht gut.

    – Die bescheidene Ratte

    18. September 2015 um 11:18 Uhr

  • Wenn es überhaupt hilft, können Sie mit dieser Desktop-App Probleme mit gemischten Inhalten schnell aufspüren oder einen Bericht von ihnen anfordern: ecommerce.co.uk/httpschecker

    – Billard

    29. März 2016 um 15:26 Uhr

1646630950 629 SSL fur gemischte Inhalteunsichere Inhalte duplicate
Akam

Die einfachste Lösung besteht darin, alle Links manuell zu ersetzen, indem Sie diese Lösung unten verwenden, um Ihre Zeit zu sparen und es ist sehr einfach.

Die Idee ist, alle (Protokoll HTTP und HTTPS) zu entfernen und sie der Verwendung der relativen Protokoll-URL https://stackoverflow.com/a/15146073/3599237 zu überlassen

Wir können dies mit dem folgenden Code für tun index.php

<?php
//this lined added here
ob_start();
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

//and these lines also 
$output = ob_get_contents();
ob_end_clean();

$output = str_replace(array("https://", "http://"), "//", $output);
echo str_replace('http:\/\/', "\/\/", $output);

Update: Sie können einfach die Content Security Policy verwenden

Die HTTP Content-Security-Policy (CSP)-Anweisung upgrade-insecure-requests weist Benutzeragenten an, alle unsicheren URLs einer Site (die über HTTP bereitgestellt werden) so zu behandeln, als ob sie durch sichere URLs (die über HTTPS bereitgestellt) ersetzt worden wären. Diese Anweisung ist für Websites mit einer großen Anzahl unsicherer alter URLs gedacht, die umgeschrieben werden müssen.

Die Upgrade-insecure-requests-Direktive wird vor block-all-mixed-content ausgewertet und wenn sie gesetzt ist, ist Letzteres effektiv ein no-op. Es wird empfohlen, eine der beiden Anweisungen festzulegen, aber nicht beide, es sei denn, Sie möchten HTTPS auf älteren Browsern erzwingen, die dies nach einer Umleitung auf HTTP nicht erzwingen.

Fügen Sie die folgende Zeile in den Header-Abschnitt ein (header.php-Datei).

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Für weitere Informationen lesen Sie bitte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests

  • verwenden // Anstelle des Protokolls ist definitiv der richtige Weg. Habe so eine Lösung noch nicht gesehen, sehr interessant.

    – Die bescheidene Ratte

    20. Juni 2016 um 8:30 Uhr

  • @TheHumbleRat: Ich habe dieses Problem auch bei der Verwendung des WordPress Super Cash-Plugins gelöst. Wenn Sie es verwendet haben, benachrichtigen Sie mich bitte, ich werde Ihnen die Lösung mitteilen.

    – Akam

    21. Juni 2016 um 20:22 Uhr

  • Funktionierende Lösung, aber nicht perfekt. Wenn die Website beispielsweise Links zu anderen Websites enthält, ändert dieses Skript sie ebenfalls in https.

    – Elektroid

    30. August 2016 um 10:26 Uhr

  • @electroid: Sie können daran arbeiten, nur Ihre Domain zu ersetzen.

    – Akam

    30. August 2016 um 11:54 Uhr

  • @Akam gibt es eine Möglichkeit, dasselbe zu tun domain.com/wp-admin/* ? versucht zu bearbeiten /wp-admin/index.php mit dem gleichen Trick, aber überhaupt kein Glück

    – balexandre

    23. März 2018 um 16:05 Uhr


963170cookie-checkSSL für gemischte Inhalte/unsichere Inhalte [duplicate]

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

Privacy policy