स्थापित करें मुझे सप्ताह में एक बार लगभग 50 सीआरएल डाउनलोड और इंस्टॉल करने की आवश्यकता है और उन्हें कई विंडोज सर्वर पर स्थापित करना होगा। डाउनलोड करना आसान हिस्सा है, क्या कोई तरीका है कि मैं सीआरएल आयात प्रक्रिया को स्क्रिप्ट कर सकता हूं?प्रोग्रामिक रूप से प्रमाणपत्र रद्द करने की सूची (सीआरएल)
उत्तर
मुझे स्क्रिप्ट के माध्यम से ऐसा करने का कोई तरीका नहीं पता। क्या आप सी कोड लिख सकते हैं? अगर मैं समझता हूं कि आप क्या करना चाहते हैं, तो आप CryptUiWizImport फ़ंक्शन का उपयोग करेंगे, और CRYPTUI_WIZ_IMPORT_SRC_INFO संरचना।
यहाँ एक sample of code that installs a Cert है; संबंधित सीआरएल आयात समान है।
परिशिष्ट:
This post बताते हैं कि Win32 एपीआई (जैसे CryptUiWizImport के रूप में) PowerShell से सीधा नहीं कर रहे हैं, और फिर एक संभावित समाधान, वर्णन करता है: PowerShell स्क्रिप्ट के भीतर से, गतिशील रूप से पैदा करते हैं और है कि सी # कोड संकलन पी/सामग्री को आमंत्रित करें, और उसके परिणामस्वरूप असेंबली चलाएं। यह आपको CryptUiWizImport को एक पावरहेल स्क्रिप्ट से कड़ाई से करने की अनुमति देगा, हालांकि यह एक सुंदर विदेशी होगा।
मैंने CryptUIWizImport फ़ंक्शन को सी # कंसोल एप्लिकेशन के रूप में लपेट लिया और यह दोनों कर्ट और सीआरएल स्थापित करने के लिए एक आकर्षण की तरह काम करता है। आपका बहुत बहुत धन्यवाद! – Goyuix
क्या आप अगले व्यक्ति की सहायता के लिए स्रोत पोस्ट करने में रुचि रखते हैं? – Cheeso
मैं वास्तव में स्रोत में रूचि रखूंगा ... क्योंकि मेरे पास बिल्कुल वही समस्या है। – Mephisztoe
PowerShell में एक Cert:
प्रदाता जो प्रमाणपत्र संग्रह का प्रतिनिधित्व करता है। इसे मैन्युअल रूप से मानक cmdlets के माध्यम से किया जाता है ताकि आप वहां कहीं भी रद्द करने की सूची को एकीकृत कर सकें। मैं सिर्फ इस बारे में पर्याप्त नहीं जानता कि कैसे विंडोज़ किसी और सहायता के लिए प्रमाणपत्रों को संभालता है।
एचएम। क्या certutil.exe उपयोगिता का उपयोग न करने का कोई कारण है? मैं निम्न आदेश चलाकर उचित दुकान में एक प्रमाणपत्र प्रतिसंहरण सूची आयात कर सकते हैं:
certutil -addstore CA <FileName>.crl
certutil मानक स्थापना का हिस्सा नहीं है। मेरा मानना है कि यह केवल तब स्थापित होता है जब सर्टिफिकेट सेवाएं स्थापित की जाती हैं (हालांकि मैं गलत हो सकता हूं)। – Goyuix
यहाँ मेरी अंतिम स्रोत (थोड़ा जनता के लिए झाड़ी) है - लेकिन काम करना चाहिए। मैं स्वीकार किए गए उत्तर को नहीं बदलेगा, लेकिन मुझे आशा है कि इससे मदद मिलेगी (जैसे प्रश्न और उत्तर को ऊपर उठाना!)।
नोट: यह स्थानीय मशीन विश्वसनीय रूट स्टोर में एक सीआरएल या नियमित प्रमाणपत्र दोनों आयात करेगा। CertOpenStore कॉल में CERT_SYSTEM_STORE_LOCAL_MACHINE
से CERT_SYSTEM_STORE_CURRENT_USER
को बदलकर इसे वर्तमान उपयोगकर्ता स्टोर के लिए काम में बदल दिया जाएगा।
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication2
{
class Program
{
public struct CRYPTUI_WIZ_IMPORT_SRC_INFO
{
public Int32 dwSize;
public Int32 dwSubjectChoice;
[MarshalAs(UnmanagedType.LPWStr)]public String pwszFileName;
public Int32 dwFlags;
[MarshalAs(UnmanagedType.LPWStr)]public String pwszPassword;
}
[DllImport("CryptUI.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern Boolean CryptUIWizImport(
Int32 dwFlags,
IntPtr hwndParent,
IntPtr pwszWizardTitle,
ref CRYPTUI_WIZ_IMPORT_SRC_INFO pImportSrc,
IntPtr hDestCertStore
);
[DllImport("CRYPT32.DLL", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr CertOpenStore(
int storeProvider,
int encodingType,
IntPtr hcryptProv,
int flags,
String pvPara
);
public const Int32 CRYPTUI_WIZ_IMPORT_SUBJECT_FILE = 1;
public const Int32 CRYPT_EXPORTABLE = 0x00000001;
public const Int32 CRYPT_USER_PROTECTED = 0x00000002;
public const Int32 CRYPTUI_WIZ_NO_UI = 0x0001;
private static int CERT_STORE_PROV_SYSTEM = 10;
private static int CERT_SYSTEM_STORE_CURRENT_USER = (1 << 16);
private static int CERT_SYSTEM_STORE_LOCAL_MACHINE = (2 << 16);
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Usage: certimp.exe list.crl");
Environment.ExitCode = 1;
}
else
{
IntPtr hLocalCertStore = CertOpenStore(
CERT_STORE_PROV_SYSTEM,
0,
IntPtr.Zero,
CERT_SYSTEM_STORE_LOCAL_MACHINE,
"ROOT"
);
CRYPTUI_WIZ_IMPORT_SRC_INFO importSrc = new CRYPTUI_WIZ_IMPORT_SRC_INFO();
importSrc.dwSize = Marshal.SizeOf(importSrc);
importSrc.dwSubjectChoice = CRYPTUI_WIZ_IMPORT_SUBJECT_FILE;
importSrc.pwszFileName = args[0];
importSrc.pwszPassword = null;
importSrc.dwFlags = CRYPT_EXPORTABLE | CRYPT_USER_PROTECTED;
if (!CryptUIWizImport(
CRYPTUI_WIZ_NO_UI,
IntPtr.Zero,
IntPtr.Zero,
ref importSrc,
hLocalCertStore
))
{
Console.WriteLine("CryptUIWizImport error " + Marshal.GetLastWin32Error());
Environment.ExitCode = -1;
}
}
}
}
}
नोट: आप X509Store, Open() भी बना सकते हैं और CryptUIWizImport के अंतिम तर्क के रूप में अपनी StoreHandle प्रॉपर्टी पास कर सकते हैं। – voetsjoeba
नोट: दस्तावेज़ीकरण के बावजूद, CRYPTUI_WIZ_NO_UI झंडे में से कोई भी पॉपअप संवाद को रोकता है जो पूछता है "क्या आप वर्तमान सीआरएल को प्रतिस्थापित करना चाहते हैं?" जब लक्ष्य स्टोर में पहले से ही एक ही या नए वैधता समय के साथ एक सीआरएल होता है। (Win2008 R2 पर परीक्षण किया गया) – voetsjoeba
नोट: एक यूआई के माध्यम से (संभावित रूप से) एक विंडोज सर्टिफिकेट स्टोर में एक सीआरएल जोड़ने का एक और सीधा तरीका है, तो आप crypt32.dll से CertAddCRLContextToStore Win32 फ़ंक्शन को P/Invoke कर सकते हैं। – voetsjoeba
- 1. क्या OpenSSL स्वचालित रूप से सीआरएल (प्रमाणपत्र निरसन सूची) को संभालता है?
- 2. प्रोग्रामिक रूप से एमवीसी दृश्यों की सूची प्राप्त करें?
- 3. सी # सीआरएल सूची में प्रमाण पत्र सत्यापित करें
- 4. प्रोग्रामिक रूप से टीमसिटी
- 5. सीआरएल
- 6. प्रोग्रामिक रूप से देखने के लिए खंड
- 7. स्क्रॉलिंग वेबब्राउज़र प्रोग्रामिक रूप से कभी-कभी
- 8. प्रोग्रामिक रूप से एक ग्रहण परियोजना
- 9. प्रोग्रामिक रूप से बड़ी संख्या में
- 10. एक्सेस रिसोर्स डिक्शनरी प्रोग्राम प्रोग्रामिक रूप से
- 11. प्रोग्रामिक रूप से कक्षा को xsd
- 12. प्रोग्रामिक रूप से एक elisp फ़ंक्शन
- 13. एक एएसपी बनाना: प्रोग्राम प्रोग्रामिक रूप से?
- 14. प्रोग्रामिक रूप से बंद gtk विंडो
- 15. जावास्क्रिप्ट, प्रोग्रामिक रूप से ऑनक्लिक ईवेंट जोड़ें
- 16. प्रोग्रामिक रूप से पता चलता है कि अज्ञात स्रोतों से स्थापित करने की अनुमति है
- 17. स्व-हस्ताक्षरित प्रमाणपत्र प्रोग्रामेटिक रूप से
- 18. आईओएस डिवाइस से प्रमाणपत्र सूची प्राप्त करें
- 19. आप प्रोग्रामपॉइंट सूचियों को प्रोग्रामिक रूप से कैसे पढ़ते हैं?
- 20. अमान्य सीआरएल कैश
- 21. वसंत सत्यापन - प्रोग्रामिक रूप से एक वैलिडेटर से बंधे
- 22. प्रोग्रामिक रूप से ग्रहण प्लगइन से स्रोत फ़ोल्डर जोड़ें
- 23. सेलेरी - प्रोग्रामेटिक रूप से श्रमिकों की सूची
- 24. प्रोग्रामिक रूप से स्थैतिक संपत्ति से कैसे जुड़ें?
- 25. प्रेषक सदस्यता रद्द करने की सदस्यता
- 26. समान रूप से सूची
- 27. समय-समय पर डेस्कटॉप वॉलपेपर को प्रोग्रामिक रूप से बदलें
- 28. क्लाइंट पर प्रोग्रामिक रूप से jqGrid फ़िल्टर करें?
- 29. JQGrid प्रोग्रामिक रूप से ग्रिड पंक्ति का चयन करें
- 30. प्रोग्राम को एनएसटीक्स्टफाल्ड में प्रोग्रामिक रूप से बदलें?
जब आप कहते हैं कि डाउनलोड करना आसान हिस्सा है? क्या आप अपनी तकनीक साझा कर सकते हैं जिसका उपयोग आप इसे पूरा करने के लिए करते थे। धन्यवाद – Raj
@राज काफी प्रमाण पत्र प्राधिकरण या हस्ताक्षर प्रमाणपत्र मेटाडेटा के हिस्से के रूप में एक सीआरएल स्थान प्रकाशित करेगा। प्रश्न में प्रमाण पत्र खोलें और "सीआरएल वितरण अंक" नामक फ़ील्ड की तलाश करें। असल में यह एक सामान्य सवाल है जिसे आपको सिर्फ टिप्पणी के रूप में नहीं छोड़ना चाहिए। – Goyuix
हां, मैं प्रमाण पत्र में एक फ़ील्ड के रूप में वितरण बिंदुओं से अवगत हूं। वर्तमान में मैं सीडीपी से पुनर्प्राप्त करने के लिए रिमोट ऑब्जेक्ट पुनर्प्राप्ति कार्यों, [CryptoAPI] का उपयोग करता हूं। मैं यह भी समझता हूं कि यदि आप यूआरएल की प्रतिलिपि बनाते हैं और उन्हें ब्राउज़र में चिपकाते हैं, तो सीआरएल भी डाउनलोड हो जाएगा। मैंने आपको एक टिप्पणी के रूप में क्यों पूछा है कि आपने उल्लेख किया है कि सीआरएल पुनर्प्राप्ति आसान हिस्सा है, इसलिए मैंने माना कि आपके पास कुछ उपयोगिता या कुछ है जो आपके लिए यह करेगा। लेकिन जाहिर है कि मेरी धारणा गलत थी। उत्तर देने के लिये धन्यवाद। – Raj