
خادم بسيط لاستضافة شهادات SSL الصالحة والملغاة والمنتهية الصلاحية المطلوبة بموجب القسم 2.2 من معايير CA/Browser Forum Baseline Requirements.
هذا خادم ويب مبني خصيصًا لاستضافة صفحات الاختبار المطلوبة من قبل متطلبات الأساسيات لمنتدى CA/Browser. تحتوي على المتطلب التالي:
يجب على المرجع المصدق (CA) استضافة صفحات ويب اختبارية تسمح لموردي برامج التطبيقات باختبار برامجهم باستخدام شهادات المشتركين التي تتسلسل حتى كل شهادة جذر موثوقة علنيًا. على الأقل، يجب على المرجع المصدق استضافة صفحات ويب منفصلة باستخدام شهادات مشتركين تكون صالحة، وملغاة، ومنتهية الصلاحية.
يستخدم بروتوكول ACME للحصول على الشهادات. يخدم موقعًا ويب بسيطًا يحتوي على بعض المعلومات التي تشرح الغرض من موقع الاختبار.
من متطلبات الأساسيات لشهادات TLS لمنتدى CA/Browser:
على الرغم من أن هذا تم بناؤه من أجل Let's Encrypt، إلا أنه يجب أن يكون قابلًا للاستخدام من قبل مراجع مصدقة ACME أخرى.
هذا برنامج Go مستقل.
go run main.go -config [path/to/config.json]
انظر config/config.go لمخطط التهيئة وconfig/testdata/test.json لمثال على تهيئة صالحة. يتم إنشاء تهيئة اختبار التكامل في وقت التشغيل بواسطة integration/configgen.
نوفر ملف docker-compose.yml للاختبار المحلي. سيقوم تلقائيًا بنشر Pebble، وهو مرجع مصدق اختباري. نفذ:
docker compose up --build
ثم، قم بالوصول إلى أحد مواقع الاختبار.
هي متاحة على:
قد تعمل هذه العناوين فورًا، ولكن إذا لم يتم حلها على نظامك، يمكنك جعل curl يحلها:
curl -k --resolve revoked.localhost:5001:127.0.0.1 'https://revoked.localhost:5001/'
إذا كنت ترغب في الوصول إلى المواقع من متصفحك، قم بتعديل ملف /etc/hosts ليشمل عناوين شهادات الاختبار.
127.0.0.1 valid.localhost revoked.localhost expired.localhost
تم استلهام هذا البرنامج من عدة حوادث لاحظناها من مراجع مصدقة أخرى، بالإضافة إلى تعقيد حلنا الحالي باستخدام أدوات جاهزة.
بعض فئات الحوادث التي لاحظناها تشمل:
يعد الخادم مع تكامل ACME الطريقة الأكثر موثوقية لضمان تحديث الشهادات، لكن المتطلبات غير المعتادة لتقديم شهادات ملغاة ومنتهية الصلاحية ليست ميزة نموذجية للأنظمة الأخرى. كما أن أنظمة المراقبة لا تدعم عادةً ضمان أن الشهادات ملغاة أو منتهية الصلاحية.
حاليًا، يدعم test-certs-site طريقة التحقق TLS-ALPN-01 فقط. لتحقيق هذا التحدي، ولخدمة مواقع الاختبار، يستمع هذا البرنامج على منفذ قابل للتهيئة، يجب أن يكون مكشوفًا كمنفذ TLS، :443.
لاحظ أنه في التهيئة الاختبارية يستمع على :5001 افتراضيًا، وهو ما يتطابق مع منفذ التحقق الافتراضي لـ Pebble.
حاليًا، يخزن test-certs-site جميع المواد المفتاحية كمسارات على القرص. لتسهيل تشغيل cert-test-program في بيئات سحابية أو مؤقتة، سنحتاج إلى دعم آلية ما لحفظ المفاتيح في إدارة الأسرار.
بخلاف تخزين المفاتيح والشهادات، هذا البرنامج عديم الحالة.
هناك مستمع تصحيح قابل للتهيئة يعرض /debug/pprof و /metrics. تتم طباعة السجلات بصيغة JSON إلى stderr.