google chrome يفتح الحصول على Chrome لقبول شهادة المضيف المحلي ذاتية التوقيع




حل مشكلة قوقل كروم توقف عن العمل (24)

I was experiencing the same issue: I had installed the certificate in to Windows' Trusted Root Authorities store, and Chrome still refused the certificate, with the error ERR_CERT_COMMON_NAME_INVALID . Note that when the certificate is not properly installed in the store, the error is ERR_CERT_AUTHORITY_INVALID .

As hinted by the name of the error, this comment , and this question , the problem was lying in the declared domain name in the certificate. When prompted for the "Common Name" while generating the certificate, I had to enter the domain name I was using to access the site ( localhost in my case). I restarted Chrome using chrome://restart and it was finally happy with this new certificate.

لقد قمت بإنشاء شهادة SSL موقعة ذاتياً لـ CN المحلي. يقبل Firefox هذه الشهادة بعد الشكوى في البداية عنها ، كما هو متوقع. ومع ذلك ، يرفض Chrome و IE قبوله ، حتى بعد إضافة الشهادة إلى مخزن شهادات النظام ضمن الجذور الموثوق بها. على الرغم من أن الشهادة مسردة على أنها مثبتة بشكل صحيح عندما أنقر على "عرض معلومات الشهادة" في النافذة المنبثقة لبروتوكول HTTPS في Chrome ، فإنها لا تزال تصر على أنه لا يمكن الوثوق في الشهادة.

ما الذي ينبغي عليّ فعله لقبول Chrome لقبول الشهادة والتوقف عن الشكوى بشأنها؟


UPDATE 11/2017: قد لا تعمل هذه الإجابة على الأرجح مع معظم الإصدارات الأحدث من Chrome.

تحديث 02/2016: يمكن العثور على تعليمات أفضل لمستخدمي Mac Here .

  1. على الموقع الذي تريد إضافته ، انقر بزر الماوس الأيمن على رمز القفل الأحمر في شريط العناوين:

    1. انقر فوق علامة التبويب المسمى "اتصال" ، ثم انقر فوق " معلومات الشهادة"

    2. انقر فوق علامة التبويب تفاصيل ، انقر فوق الزر نسخ إلى ملف .... سيؤدي ذلك إلى فتح "معالج تصدير الشهادات" ، ثم النقر فوق " التالي" للوصول إلى شاشة تصدير تنسيق الملف .

    3. اختر DER المشفر الثنائي X.509 (.CER) ، انقر فوق التالي

    4. انقر فوق استعراض ... واحفظ الملف على جهاز الكمبيوتر الخاص بك. سمها شئ وصفي. انقر فوق التالي ، ثم انقر فوق إنهاء .

    5. افتح إعدادات Chrome ، وانتقل إلى أسفل ، وانقر على عرض الإعدادات المتقدمة ...

    6. ضمن HTTPS / SSL ، انقر على إدارة الشهادات ...

    7. انقر فوق علامة التبويب المراجع المصدقة لشهادات الجذر الموثوق بها ، ثم انقر فوق الزر " استيراد ..." . هذا يفتح "معالج استيراد الشهادات". انقر فوق التالي للوصول إلى شاشة ملف للاستيراد .

    8. انقر فوق استعراض ... وحدد ملف الشهادة الذي قمت بحفظه مسبقًا ، ثم انقر فوق التالي .

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

    10. انقر فوق نعم على تحذير الأمان.

    11. أعد تشغيل Chrome.


هذا العمل بالنسبة لي:

  1. باستخدام Chrome ، قم بالضغط على صفحة على خادمك عبر HTTPS ومتابعة صفحة التحذير الحمراء (على افتراض أنك لم تقم بذلك بالفعل).
  2. افتح Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates .
  3. انقر على علامة التبويب "المراجع" ومرر لأسفل للعثور على شهادتك ضمن اسم المؤسسة التي قدمتها للشهادة.
  4. حدده ، انقر على تعديل ( ملاحظة : في الإصدارات الأخيرة من Chrome ، أصبح الزر "متقدمًا" بدلاً من "تحرير") ، حدد جميع المربعات وانقر على موافق. قد تضطر إلى إعادة تشغيل Chrome.

يجب أن تحصل على قفل أخضر رائع على صفحاتك الآن.

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

  1. في الصفحة التي تحتوي على الشهادة غير الموثوق بها ( https:// تم شطبها باللون الأحمر) ، انقر على القفل> معلومات الشهادة. ملاحظة: في الإصدارات الأحدث من chrome ، يجب عليك فتح Developer Tools > Security ، وتحديد View certificate .
  2. انقر فوق Details tab > Export . اختر PKCS #7, single certificate بتنسيق الملف.
  3. ثم اتبع تعليماتي الأصلية للوصول إلى صفحة إدارة الشهادات. انقر فوق Authorities tab > Import واختر الملف الذي قمت بتصدير الشهادة إليه ، وتأكد من اختيار PKCS #7, single certificate كنوع الملف .
  4. في حالة طلب مخزن الشهادات ، اختر المراجع المصدقة لشهادات الجذر الموثوق بها
  5. حدد كل المربعات وانقر فوق OK. أعد تشغيل Chrome.

تحديث لـ CHROME 58+ (RELEASED 2017-04-19)

بدءًا من Chrome 58 ، تتم إزالة تحديد المضيف باستخدام commonName فقط. انظر المزيد من المناقشة هنا وعلة تعقب هنا . في الماضي ، تم استخدام subjectAltName فقط للحصول على عدد كبير من مجموعات المضيف ، لذلك قد لا تتضمن بعض أدوات CA الداخلية.

إذا كان سيرتك الذاتية موقعة بشكل جيد في الماضي ولكن فجأة بدأت في توليد أخطاء في Chrome 58 ، هذا هو السبب.

أيًا كانت الطريقة التي تستخدمها لإنشاء شهادة موقعة ذاتياً (أو شهادة موقعة من قبل subjectAltName ذاتيًا) ، تأكد من subjectAltName شهادة الخادم على subjectAltName مع إدخال / إدخال IP و / أو IP المناسبين ، حتى إذا كان فقط مضيف واحد .

بالنسبة إلى openssl ، يعني هذا أن التهيئة ستشتمل على شيء مماثل لما يلي لمضيف واحد:

[v3_req]
subjectAltName = DNS:example.com

أو للعديد من المضيفات:

[v3_req]
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3

في عارض Certificate Subject Alternative Name في Chrome (الذي تم نقله إلى علامة التبويب "الأمان" تحت F12) ، يجب أن تراه مدرجًا ضمن Extensions باسم " Certificate Subject Alternative Name :

مؤقت مؤقتة

من الممكن الرجوع إلى سلوك commonName القديم حتى Chrome 65 ، باستخدام الإعداد التالي: EnableCommonNameFallbackForLocalAnchors

في Windows ، يمكن ضبط ذلك على جهاز كمبيوتر واحد باستخدام أمر التسجيل التالي (شكرًاMeengla):

reg add HKLM\Software\Policies\Google\Chrome /v EnableCommonNameFallbackForLocalAnchors /t REG_DWORD /d 1

على نظام التشغيل Mac ، يمكن استخدام الأمر التالي (شكرًاBugsBunny):

defaults write com.google.Chrome EnableCommonNameFallbackForLocalAnchors -bool true

على نظام التشغيل Linux ، قم بإنشاء ملف سياسة مثل /etc/opt/chrome/policies/managed/EnableCommonNameFallbackFor‌​LocalAnchors.json مع المحتويات: { "EnableCommonNameFallbackForLocalAnchors": true } (thanksseanf)

يمكن العثور على مزيد من التفاصيل حول تعيين هذه السياسات لمختلف الأنظمة الأساسية ، بما في ذلك تعيينها عبر Windows GPO ، في أعلى الصفحة المرتبطة بالإضافة إلى دليل قالب سياسة Chromium ودليل المسؤولين .

مرة أخرى ، هذه الحلول مؤقتة حتى الإصدار 65!


لينكس

إذا كنت تستخدم Linux ، فيمكنك أيضًا اتباع صفحات wiki الرسمية التالية:

في الأساس:

  • انقر فوق رمز القفل مع X ،
  • اختر معلومات الشهادة
  • اذهب إلى علامة التبويب التفاصيل
  • انقر على تصدير ... (حفظ كملف)

الآن ، سيضيف الأمر التالي الشهادة (حيث يكون YOUR_FILE هو ملفك المصدر):

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE

لسرد جميع شهاداتك ، قم بتشغيل الأمر التالي:

certutil -d sql:$HOME/.pki/nssdb -L

إذا كان لا يزال لا يعمل ، فقد تتأثر بهذا الخطأ: المشكلة 55050: خطأ Ubuntu SSL 8179

PS يرجى أيضا التأكد من أن لديك libnss3-tools ، قبل أن تتمكن من استخدام الأوامر المذكورة أعلاه.

إذا لم يكن لديك ، يرجى تثبيته من خلال:

sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.

كمكافأة ، يمكنك استخدام النصوص البرمجية المفيدة التالية:

$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'

الاستعمال:

add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]

استكشاف الأخطاء وإصلاحها

  • --auto-ssl-client-auth Chrome باستخدام --auto-ssl-client-auth

    google-chrome --auto-ssl-client-auth


ذهبت إلى أسفل عملية استخدام ما اقترحه bjnord وهو: Google Chrome و Mac OS X وشهادات SSL موقعة ذاتيًا

ما هو موضح في المدونة لم تنجح.

ومع ذلك ، كان أحد التعليقات على المدونة هو الذهب:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

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


لبيئة اختبار

يمكنك استخدام --ignore-certificate-errors كمعلمة سطر أوامر عند تشغيل chrome (العمل على إصدار 28.0.1500.52 على Ubuntu).

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

يمكنني تكوين Intellij لإطلاق chrome بهذه الطريقة عند القيام التصحيح ، كما أن خوادم الاختبار أبدا شهادات صالحة.

لا أوصي بتصفح عادي مثل هذا على الرغم من أن عمليات التحقق من الشهادات ميزة أمان مهمة ، ولكن قد يكون هذا مفيدًا للبعض.


تم تحديثه في 3/2018

موصى به من قِبل فريق Chromium

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

حل سريع وسهل للغاية

هناك عبارة سرية ختامية يمكن كتابتها في صفحة الخطأ لتتمكّن من متابعة Chrome على الرغم من خطأ الأمان: thisisunsafe (في الإصدارات السابقة من Chrome ، اكتب badidea ، وحتى الخطر السابق ). لا تستخدم هذا إلا إذا كنت تفهم بالضبط لماذا تحتاج إليها!

مصدر:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/

(ملاحظة أن window.atob('dGhpc2lzdW5zYWZl') يحل إلى thisisunsafe )

أحدث إصدار من المصدر هو @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js ويمكن لوظيفة window.atob يتم تنفيذها في وحدة تحكم JS.

للحصول على معلومات أساسية حول سبب تغيير فريق Chrome لعبارة التجاوز (أول مرة):

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

إذا فشل كل شيء آخر

إذا لم يكن خيار "Proceed Anyway" متاحًا لمرة واحدة فقط إذا كان خيار "Proceed Anyway" غير متوفر ، ولا تعمل عبارة التجميع ، فهذا الاختراق يعمل جيدًا:

  1. السماح بأخطاء الشهادة من localhost عن طريق تمكين هذه العلامة (لاحظ أن Chrome يحتاج إلى إعادة التشغيل بعد تغيير قيمة العلامة):

    chrome://flags/#allow-insecure-localhost

    (وإجابة التصويت لأعلى https://.com/a/31900210/430128 byChris)

  2. إذا كان الموقع الذي تريد الاتصال به هو localhost ، localhost . بخلاف ذلك ، قم بإعداد نفق TCP للاستماع على المنفذ 8090 محليًا والاتصال بـ broken-remote-site.com على المنفذ 443 ، تأكد من تثبيت socat وتشغيل شيء كهذا في نافذة طرفية:

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. انتقل إلى https: // localhost: 8090 في متصفحك.


I fixed this problem for myself without changing the settings on any browsers with proper SSL certifications. I use a mac so it required a keychain update to my ssl certifications. I had to add subject alt names to the ssl certification for chrome to accept it. As of today, this is for Chrome version number: 62.0.3202.94

My example are easy to use commands and config files:

add these files and this example is all in one root directory

ssl.conf

[ req ]
default_bits       = 4096
distinguished_name = req_distinguished_name
req_extensions     = req_ext

[ req_distinguished_name ]
countryName                 = Country Name (2 letter code)
stateOrProvinceName         = State or Province Name (full name)
localityName                = Locality Name (eg, city)
organizationName            = Organization Name (eg, company)
commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_max              = 64

[ req_ext ]
subjectAltName = @alt_names

[alt_names]
DNS.1   = localhost

Run command to create certification:

openssl req -newkey rsa:4096 -nodes -keyout key.pem -x509 -days 3650 -out certificate.pem -extensions req_ext -config ssl.conf -subj '/CN=localhost/O=Stackflow/C=US/L=Los Angeles/OU=StackflowTech'

For macs only to add trusted certification (required):

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./certificate.pem

For windows you will have to find how to verify our ssl certs locally independently. I don't use Windows. Sorry windows guys and gals.

I am using a node.js server with express.js with only requires my key and certification with something like this:

app.js

const https = require('https');
const Express = require('express');
const fs = require('fs');
const app = new Express();
const server = https.createServer({
    key: fs.readFileSync('./key.pem'),
    cert: fs.readFileSync('./certificate.pem'),
}, app);
server.listen(3000);

I may be doing this for other backend frames in the future, so I can update example this for others in the future. But this was my fix in Node.js for that issue. Clear browser cache and run your app on https://

Here's an example of running localhost on a Node.js server for Mac users:

https://github.com/laynefaler/Stack-Overflow-running-HTTPS-localhost

الترميز سعيدة!


It didn't work for me when I tried to import the certificate in the browser... In chrome open Developer Tools > Security, and select View certificate. Click the Details tab and export it.

// LINUX

sudo apt-get install libnss3-tools 

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n [EXPORTED_FILE_PATH] -i [EXPORTED_FILE_PATH]

Run this command and if you see the file You've just imported You are good to go!

 certutil -d sql:$HOME/.pki/nssdb -L

// Windows

Start => run => certmgr.msc

On the left side select Trusted Root Certification Authorities => Personal. Click on actions tab => All actions/import then choose the file You exported before from the browser

Don't forget to restart chrome!!!

GOOD LUCK! ؛)


For Chrome on MacOS, if you have prepared a certificate:

  • Quit Chrome ( cmd + Q ).
  • Start the Keychain Access app and open the "Certificates" category.
  • Drag your certificate file onto the Keychain Access window and type the password for the certificate file.
  • Double click on your certificate and unfold the "Trust" list.
    • In row "When using this certificate," choose "Always Trust."
    • Close this stuff and type your password.
  • Start Chrome and clear all caches.
  • Check that everything is ok.

ليس للمنتج

ما عليك سوى لصق هذا في Chrome:

chrome://flags/#allow-insecure-localhost

يجب أن تشاهد نصًا مميزًا قائلاً: السماح بالشهادات غير الصالحة للموارد التي تم تحميلها من المضيف المحلي

انقر فوق Enable .


بدءًا من الإصدار Chrome 58 والإصدارات الأحدث ، بدأت في الحصول على خطأ في شهادة على نظام MacOS بسبب فقد SAN. فيما يلي كيفية الحصول على القفل الأخضر على شريط العناوين مرة أخرى.

  1. قم بإنشاء شهادة جديدة باستخدام الأمر التالي:

    openssl req \
      -newkey rsa:2048 \
      -x509 \
      -nodes \
      -keyout server.key \
      -new \
      -out server.crt \
      -subj /CN=*.domain.dev \
      -reqexts SAN \
      -extensions SAN \
      -config <(cat /System/Library/OpenSSL/openssl.cnf \
          <(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \
      -sha256 \
      -days 720
    
  2. قم باستيراد server.crt في KeyChain ، ثم انقر نقرًا مزدوجًا في الشهادة ، ثم قم بتوسيع الثقة ، وحدد الثقة دائمًا

قم بتحديث الصفحة https://domain.dev في Google Chrome ، بحيث يعود القفل الأخضر.


هذا العمل بالنسبة لي. See: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

In the address bar, click the little lock with the X. This will bring up a small information screen. Click the button that says "Certificate Information."

Click and drag the image to your desktop. It looks like a little certificate.

Double-click it. This will bring up the Keychain Access utility. Enter your password to unlock it.

Be sure you add the certificate to the System keychain, not the login keychain. Click "Always Trust," even though this doesn't seem to do anything.

After it has been added, double-click it. You may have to authenticate again.

Expand the "Trust" section.

"When using this certificate," set to "Always Trust"


For development purposes on Windows you can
add to Chrome shortcut flag --ignore-certificate-errors

It expected to ignore certificate errors and allow you to access invalid certificate websites.
Better detailed instructions in https://support.opendns.com/entries/66657664 .


WINDOWS JUN / 2017 Windows Server 2012

لقد اتبعت الإجابة عنBrad Parks. على Windows ، يجب استيراد ملف rootCA.pem في مخزن المراجع المصدقة لشهادات الجذر الموثوقة.

قمت بالخطوات التالية:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

أين v3.ext هو:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

ثم ، في حالتي لدي تطبيق ويب استضافت ذاتي ، لذلك أحتاج إلى ربط الشهادة مع عنوان IP والمنفذ ، يجب أن تكون الشهادة في متجر MY مع معلومات المفتاح الخاص ، لذلك قمت بالتصدير إلى تنسيق pfx.

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

مع وحدة تحكم MMC (ملف / إضافة أو إزالة الأدوات الإضافية / الشهادات / إضافة / حساب Computert / LocalComputer / OK) استوردت ملف pfx في متجر شخصي.

استخدمت في ما بعد هذا الأمر لربط الشهادة (يمكنك أيضًا استخدام أداة HttpConfig):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash = شهادة الإبهام

appid = GUID (اختيارك)

أولاً ، حاولت استيراد الشهادة "device.crt" على "شهادات الشهادات الجذر الموثوقة" بطرق مختلفة ولكنني لا أزال أتلقى نفس الخطأ:

لكنني أدركت أنني يجب أن أستورد شهادة سلطة الجذر لا شهادة للنطاق. لذا قمت باستخدام وحدة تحكم MMC (File / Add or Remove Snap-ins / Certificates / Add / Computert Account / LocalComputer / OK) لقد استوردت rootCA.pem في مخزن المراجع المصدقة لشهادات الجذر الموثوقة.

إعادة تشغيل كروم و et voilà أنه يعمل.

مع المضيف المحلي:

أو مع عنوان IP:

الشيء الوحيد الذي لم أستطع تحقيقه هو أنه يحتوي على تشفير قديم (مربع أحمر على الصورة). المساعدة هي موضع تقدير في هذه النقطة.

مع makecert ليس من الممكن إضافة معلومات SAN. مع New-SelfSignedCertificate (Powershell) يمكنك إضافة معلومات SAN ، كما أنها تعمل.


This is something that keeps coming up -- especially for Google Chrome on Mac OS X Yosemite!

Thankfully, one of our development team sent me this link today, and the method works reliably, whilst still allowing you to control for which sites you accept certificates.

https://www.reddit.com/r/sysadmin/comments/3ercx4/chrome_shortcut_past_the_your_connection_is_not/cthporl

jersully posts:

If you don't want to bother with internal certificates...

  1. Type chrome://flags/ in the address bar.
  2. Scroll to or search for Remember decisions to proceed through SSL errors for a specified length of time.
  3. Select Remember for three months.

What am I supposed to do to get Chrome to accept the certificate and stop complaining about it?

You should create a PKI with;

1) self-signed Root CA.
2) sub / intermediate certificate [signed by Root CA].
3) normal / end-entity certificate [signed either by Root CA or sub-CA] (commonName or subjectAltName (SAN) as localhost) (also include localhost as the URI in SAN).
4) Import / Install that Root CA in your Windows OS (because you mentioned IE. Google Chrome is using the same resources while looking for certificates chain - https://www.chromium.org/Home/chromium-security/root-ca-policy ) as 'Trusted Root Certification Authorities'.
5) Install that end-entity certificate as your web server certificate, and it stops complaining that error message.

أتمنى أن يساعدك هذا.


2017-06-27 newest method:

openssl req \
    -newkey rsa:2048 \
    -x509 \
    -nodes \
    -keyout yoursite.key \
    -new \
    -out yoursite.crt \
    -subj /CN=yoursite.dev \
    -reqexts SAN \
    -extensions SAN \
    -config <(cat /System/Library/OpenSSL/openssl.cnf \
        <(printf '[SAN]\nsubjectAltName=DNS:yoursite.dev')) \
    -sha256 \
    -days 3650

then, add yoursite.crt and yoursite.key to your nginx conf.

from: https://github.com/webpack/webpack-dev-server/issues/854


على جهاز Mac ، يمكنك إنشاء شهادة موثوق بها تمامًا من Chrome و Safari على مستوى النظام من خلال إجراء ما يلي:

# create a root authority cert
./create_root_cert_and_key.sh

# create a wildcard cert for mysite.com
./create_certificate_for_domain.sh mysite.com

# or create a cert for www.mysite.com, no wildcards
./create_certificate_for_domain.sh www.mysite.com www.mysite.com

ما ورد أعلاه يستخدم البرامج النصية التالية ، و v3.ext الملف v3.ext ، لتجنب الأخطاء البديلة في اسم الموضوع

إذا كنت ترغب في إنشاء شهادة موقعة ذاتيًا جديدة موثوق بها تمامًا باستخدام مرجع الجذر الخاص بك ، فيمكنك القيام بذلك باستخدام هذه البرامج النصية.

create_root_cert_and_key.sh

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

create_certificate_for_domain.sh

if [ -z "$1" ]
then
  echo "Please supply a subdomain to create a certificate for";
  echo "e.g. www.mysite.com"
  exit;
fi

# Create a new private key if one doesnt exist, or use the xeisting one if it does
if [ -f device.key ]; then
  KEY_OPT="-key"
else
  KEY_OPT="-keyout"
fi

DOMAIN=$1
COMMON_NAME=${2:-*.$1}
SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
NUM_OF_DAYS=999
openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
cat v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.ext
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext 

# move output files to final filenames
mv device.csr $DOMAIN.csr
cp device.crt $DOMAIN.crt

# remove temp file
rm -f device.crt;

echo 
echo "###########################################################################"
echo Done! 
echo "###########################################################################"
echo "To use these files on your server, simply copy both $DOMAIN.csr and"
echo "device.key to your webserver, and use like so (if Apache, for example)"
echo 
echo "    SSLCertificateFile    /path_to_your_files/$DOMAIN.crt"
echo "    SSLCertificateKeyFile /path_to_your_files/device.key"

v3.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = %%DOMAIN%%

خطوة واحدة إضافية - كيفية جعل سير ذاتية التوقيع على ثقة كاملة في كروم / سفاري

للسماح للشهادات الموقعة ذاتيًا الوثوق بها تمامًا في Chrome و Safari ، يلزمك استيراد مرجع مصدق جديد إلى جهاز Mac. للقيام بذلك اتبع هذه التعليمات ، أو إرشادات أكثر تفصيلاً حول هذه العملية العامة على موقع الويب mitmproxy :

  1. افتح Keychain Access
  2. اختر "النظام" في قائمة "Keychains"
  3. اختر "الشهادات" في قائمة "الفئة"
  4. اختر "ملف | استيراد عناصر ..."
  5. استعرض للوصول إلى الملف الذي تم إنشاؤه أعلاه ، "rootCA.pem" ، وحدده ، وانقر على "فتح"
  6. حدد الشهادة التي تم استيرادها حديثًا في قائمة "الشهادات".
  7. انقر على زر "i" أو انقر بزر الماوس الأيمن على شهادتك واختر "Get Info"
  8. قم بتوسيع خيار "الثقة"
  9. تغيير "عند استخدام هذه الشهادة" إلى "الثقة دائما"
  10. أغلق مربع الحوار ، وستتم مطالبتك بكلمة المرور الخاصة بك.
  11. أغلق وأعد فتح أي علامات تبويب تستخدم نطاقك المستهدف ، وسيتم تحميلها بأمان!

وكمكافأة ، إذا كنت بحاجة إلى عملاء جافا أن يثقوا بالشهادات ، فيمكنك القيام بذلك عن طريق استيراد مشترياتك إلى مخزن ملفات التعريف java. لاحظ أن هذا سيزيل الشهادة من مخزن المفاتيح المشفرة إذا كان موجودًا بالفعل ، لأنه يحتاج إلى تحديثه في حالة تغير الأشياء. وبالطبع لا يفعل ذلك إلا في حالة استيراد الحبوب.

import_certs_in_current_folder_into_java_keystore.sh

KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE;
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_java_keystore
else
  echo "This script needs to be run as root!"
fi

عند النقر على رمز القفل المتقاطع بجوار عنوان URL ، ستحصل على مربع يبدو كالتالي:

بعد النقر على رابط معلومات الشهادة ، سترى مربع الحوار التالي:

يخبرك بمتجر الشهادات الذي هو مخزن صحيح ، إنه مخزن المراجع المصدقة لشهادات الجذر الموثوق بها .

يمكنك إما استخدام إحدى الطرق الموضحة في الإجابات الأخرى لإضافة الشهادة إلى هذا المتجر أو استخدام:

certutil -addstore -user "ROOT" cert.pem
  • ROOT هو الاسم الداخلي لمخزن الشهادات المذكور سابقاً.
  • cert.pem هو اسم الشهادة الموقعة ذاتيًا.

SSL / HTTPS localhost fix on the mac / osx:

  1. Click the red lock with the cross in your address bar when trying to open your https localhost environment. There'll open a window with some information about the certificate.

  2. Click on "Details" information window

  3. The chrome Developer tools opens on the tab 'Security'. Click on View Certificate . The certificate image
  4. Add it to your 'System' keychain (not your 'login' keychain which is selected by default).

  5. Open your keychain (again) and find the certificate. Click on it and make sure you "Trust" all.

  6. Restart chrome and it should work.


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

نص مكتوب ذاتيًا بلغة bash

بعد تثبيت الشهادة والثقة بها ، لا تنس إعادة تشغيل Chrome ( chrome://restart)


هل أنت متأكد من أن العنوان الذي يتم تقديم الموقع به هو نفس عنوان الشهادة؟ واجهت نفس المشاكل مع Chrome وشهادة موقعة ذاتيًا ، ولكن في النهاية وجدت أنه كان من الصعب إرضاءه للغاية حول التحقق من صحة اسم النطاق على الشهادة (كما ينبغي أن يكون).

لا يحتوي Chrome على متجر شهادات خاص به ويستخدم نافذة خاصة به. ومع ذلك ، لا يوفر Chrome أية طريقة لاستيراد certs إلى المتجر ، لذلك يجب إضافتها عبر IE بدلاً من ذلك.

تثبيت الشهادات في جوجل كروم

تثبيت الشهادات في Internet Explorer

ألقِ نظرة أيضًا على هذا الأمر لاتباع طريقتين مختلفتين لإنشاء خرائط ذاتية موقعة (أفترض أنك تستخدم IIS كما لم تذكر).

كيفية إنشاء شهادة موقعة ذاتيا في IIS 7





self-signed