Hallo An alle
obwohl ich hier in VB 6.0 entwickle sztelle ich diese frage in diesem
Forum, da ich mir nicht anders helfen kann. In einem anderen Forum habe
ich bis jetzt noch keine Antwort zu diesem Problem erhalten.
Situation:
----------
Ich habe einen Zertifikatserver (Windows 2003 Entprise) am laufen.
Auf einem anderen Rechner läuft ein VB Programm, dass Zertifikate
beantragt. Dieser Rechner ist in der gleichen Domäne und hat Zugriffsrechte.
Wenn ich mit dem Visual basic 6.0 Programm ein Zertifikatsrequest
durchführe kommt folgende Fehlermeldung:
Fehlermeldung:
---------------
Verweigert vom Richtlinienmodul 0x80094801. Die Anforderung enthält
werder die Erweiterung für die Zertifikatvorlage, noch das
Anforderungsattribut "CertificateTemplate"
Was soll mir diese Fehlermeldung sagen ?
Ich habe den Code unten angehängt.
Auf dem Zertifizierungsserver sehe ich diese fehlgeschlagene Anfrage in
der Liste der "fehlgeschlagenen Anforderungen". Das heisst also, die
Anfrage wird eigentlich korrekt abgesetzt, nur irgend wie ist die
Anfrage fehlerhaft bzw. unvollständig. Was fehlt denn da ?
Ichhabe das Beispiel aus dem Buch "Developing Secure Applications with
Visual Basic"
Hier der Code:
------------------------------------------------
Public Function DoCertRequest() As Boolean
DoCertRequest = False
Dim strDN As String
Dim strReq As String
Dim lDisp As Long
Dim strMsg As String
On Error GoTo DoCertReqErr
strDN = "CN=" & m_strUserName + ",OU=" + m_strUnit + ",O=" +
m_strOrganization + ",L=" + m_strCity + ",S=" + m_strState + ",C=" +
m_strCountry
If (m_strEMail <> "") Then
strDN = strDN + ",E=" & m_strEMail
End If
m_objXen.KeySpec = m_lKeySpec
strReq = m_objXen.createPKCS10(strDN, "1.3.6.1.4.1.311.2.1.21")
'm_strKeyUsage)
lDisp = m_objReq.Submit(CR_IN_BASE64 Or CR_IN_PKCS10, strReq, "",
Trim(m_strServer) + "\" + Trim(m_strCA))
strMsg = m_objReq.GetDispositionMessage
MsgBox strMsg, vbOKOnly, "Zertifikatsanfrage"
If ((lDisp = CR_DISP_INCOMPLETE) Or (lDisp = CR_DISP_ERROR) Or (lDisp =
CR_DISP_DENIED)) Then
Exit Function
End If
m_lReqID = m_objReq.GetRequestId
If (lDisp = CR_DISP_ISSUED) Or (lDisp = CR_DISP_ISSUED_OUT_OF_BAND) Then
If Not GetCert() Then Exit Function
End If
DoCertRequest = True
Exit Function
DoCertReqErr:
MsgBox "Fehler#" & Err.Number & " ( " & Err.Description & ")",
vbCritical, "Fehler"
End Function
--------------------------------------------------------------
in der Zeile : 'lDisp = m_objReq.Submit(CR_IN_BASE64 Or CR_IN_PKCS10,
strReq, "", Trim(m_strServer) + "\" + Trim(m_strCA))
' wird dieser Fehler erzeugt und die Zeile 'strMsg =
m_objReq.GetDispositionMessage' ruft die Fehlermeldung vom Server ab.
Ich habe keinen Schimmer warum das nicht geht, denn auf der MSDN Site
ist diese Submit Zeile genauso angegeben.
Bin um jeden Hinweis und Tip froh.
Danke
Nikolai Wylutzki