
एक सरल सर्वर जो CA/Browser Forum Baseline Requirements के धारा 2.2 द्वारा आवश्यक वैध, रद्द और समाप्त प्रमाणपत्रों को होस्ट करता है।
यह एक उद्देश्य-निर्मित वेबसर्वर है जो CA/ब्राउज़र फोरम बेसलाइन आवश्यकताओं द्वारा आवश्यक परीक्षण पृष्ठों को होस्ट करने के लिए बनाया गया है। इनमें निम्नलिखित आवश्यकता शामिल है:
CA को ऐसे परीक्षण वेब पेज होस्ट करने होंगे जो एप्लिकेशन सॉफ्टवेयर आपूर्तिकर्ताओं को अपने सॉफ्टवेयर का परीक्षण उन ग्राहक प्रमाणपत्रों के साथ करने की अनुमति दें जो प्रत्येक सार्वजनिक रूप से विश्वसनीय रूट प्रमाणपत्र तक श्रृंखलित होते हैं। कम से कम, CA को वैध, रद्द और समाप्त ग्राहक प्रमाणपत्रों का उपयोग करके अलग-अलग वेब पेज होस्ट करने होंगे।
यह प्रमाणपत्र प्राप्त करने के लिए ACME प्रोटोकॉल का उपयोग करता है। यह एक सरल वेबसाइट प्रदान करता है जिसमें यह बताने वाली कुछ जानकारी होती है कि परीक्षण साइट किस लिए है।
CA/ब्राउज़र फोरम TLS बेसलाइन आवश्यकताओं से:
हालांकि यह Let's Encrypt के लिए बनाया गया था, यह अन्य ACME CA द्वारा भी उपयोग किया जा सकना चाहिए।
यह एक स्वतंत्र Go प्रोग्राम है।
go run main.go -config [path/to/config.json]
कॉन्फ़िगरेशन स्कीमा के लिए config/config.go देखें और एक मान्य कॉन्फ़िगरेशन के उदाहरण के लिए config/testdata/test.json देखें। एकीकरण परीक्षण कॉन्फ़िगरेशन रनटाइम पर integration/configgen द्वारा उत्पन्न होता है।
हम स्थानीय परीक्षण के लिए एक docker-compose.yml फ़ाइल प्रदान करते हैं। यह स्वचालित रूप से Pebble, एक परीक्षण CA, को तैनात करेगा। निष्पादित करें:
docker compose up --build
फिर, किसी एक परीक्षण साइट तक पहुँचें।
वे उपलब्ध हैं:
ये URL तुरंत काम कर सकते हैं, लेकिन यदि वे आपके सिस्टम पर हल नहीं होते हैं, तो आप 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
यह सॉफ़्टवेयर कई घटनाओं से प्रेरित था जो हमने अन्य CA से देखी थीं, साथ ही ऑफ-द-शेल्फ टूल्स का उपयोग करके हमारे मौजूदा समाधान की जटिलता से भी।
हमने जिन घटनाओं की श्रेणियाँ देखी हैं उनमें शामिल हैं:
ACME एकीकरण वाला सर्वर यह सुनिश्चित करने का सबसे विश्वसनीय तरीका है कि प्रमाणपत्र अद्यतित रहें, लेकिन रद्द और समाप्त प्रमाणपत्र प्रस्तुत करने की असामान्य आवश्यकताएँ अन्य प्रणालियों की विशिष्ट विशेषता नहीं हैं। निगरानी प्रणालियाँ भी आमतौर पर यह सुनिश्चित नहीं करतीं कि प्रमाणपत्र रद्द या समाप्त हैं।
वर्तमान में, test-certs-site केवल TLS-ALPN-01 सत्यापन विधि का समर्थन करता है। इस चुनौती को पूरा करने और परीक्षण साइटों को प्रस्तुत करने के लिए, यह प्रोग्राम एक कॉन्फ़िगरेबल पोर्ट पर सुनता है, जिसे TLS पोर्ट, :443 के रूप में उजागर किया जाना चाहिए।
ध्यान दें कि परीक्षण कॉन्फ़िगरेशन में यह डिफ़ॉल्ट रूप से :5001 पर सुनता है, जो Pebble's डिफ़ॉल्ट सत्यापन पोर्ट से मेल खाता है।
वर्तमान में, test-certs-site सभी कुंजी सामग्री को डिस्क पर पथ के रूप में संग्रहीत करता है। क्लाउड या अल्पकालिक वातावरण में cert-test-program चलाने में आसानी के लिए, हम रहस्य प्रबंधन के लिए कुंजियों को बनाए रखने के कुछ तंत्र का समर्थन करना चाहेंगे।
कुंजी और प्रमाणपत्र भंडारण के अलावा, यह प्रोग्राम स्टेटलेस है।
एक कॉन्फ़िगरेबल डीबग सुनने वाला है जो /debug/pprof और /metrics को उजागर करता है। लॉग्स stderr पर JSON में मुद्रित होते हैं।