Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Bagaimana mengirimkan digital ditandatangani pesan dengan menggunakan CDOSYS/CDOEX

Dukungan untuk Windows XP telah berakhir

Microsoft mengakhiri dukungan untuk Windows XP pada 8 April 2014. Perubahan ini telah memengaruhi pemutakhiran perangkat lunak dan opsi keamanan Anda. Pelajari apa artinya ini bagi Anda dan cara untuk tetap terlindungi.

Dukungan untuk Windows Server 2003 berakhir pada 14 Juli 2015

Microsoft mengakhiri dukungan untuk Windows Server 2003 pada 14 Juli 2015. Perubahan ini telah memengaruhi pemutakhiran perangkat lunak dan opsi keamanan Anda. Pelajari apa artinya ini bagi Anda dan cara untuk tetap terlindungi.

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:280391
RINGKASAN
Microsoft kolaborasi Data objek untuk Windows 2000 (CDOSYS) dan Microsoft kolaborasi Data objek untuk Exchange 2000 (CDOEX) tidak langsung memberikan cara untuk secara digital menandatangani atau mengenkripsi pesan. Antarmuka pemrograman aplikasi (API) tidak mengekspos fungsi untuk menghasilkan tanda yang berlaku. Namun, Anda dapat menggunakan kriptografi API dalam kombinasi dengan CDOSYS atau CDOEX untuk digital menandatangani dan/atau mengenkripsi pesan.
INFORMASI LEBIH LANJUT
Anda dapat menggunakan versi COM kriptografi API (CAPICOM) untuk dengan mudah masuk dan/atau mengenkripsi pesan CDOSYS atau CDOEX. Anda dapat memperoleh CAPICOM DLL dari Microsoft berikut "Platform SDK Redistributable: CAPICOM 1.0a" situs Web:

Dengaan signing pesan

  1. Mulai dengan CDOSYS atau CDOEX IMessage objek. Mengkonfigurasi pesan ini dengan pengirim, penerima, subjek, tubuh, lampiran, dan item lainnya yang diperlukan.
  2. Buat objek IMessage baru. Buka pesan yang ada dari langkah 1 dengan menggunakan metode IDatasource::OpenObject pesan baru ini.
  3. Dapatkan objek IMessage baru IBodyPart akar, dan kemudian menetapkan properti berikut:
    oBodyPart.ContentMediaType = "application/pkcs7-mime;smime-type=signed-data;name=""smime.p7m"""oBodyPart.ContentTransferEncoding = "base64"oBodyPart.Fields("urn:schemas:mailheader:content-disposition") = "attachment;FileName=""smime.p7m"""oBodyPart.Fields.Update					
  4. Menggunakan objek CAPICOM penandatangan dan pengirim sertifikat untuk menandatangani konten objek IMessage baru.
  5. Kirim pesan baru, dan kemudian membuang pesan awal.

Enkripsi pesan

  1. Mulai dengan CDOSYS atau CDOEX IMessage objek. Mengkonfigurasi pesan ini dengan pengirim, penerima, subjek, tubuh, lampiran, dan item lainnya yang diperlukan.
  2. Buat objek IMessage baru. Buka pesan yang ada dari langkah 1 dengan menggunakan metode IDatasource::OpenObject pesan baru ini.
  3. Dapatkan objek IMessage baru IBodyPart akar, dan kemudian menetapkan properti berikut:
    oBodyPart.ContentMediaType = "application/pkcs7-mime;smime-type=enveloped-data;name=smime.p7m;"oBodyPart.ContentTransferEncoding = "base64"oBodyPart.Fields("urn:schemas:mailheader:content-disposition") = "attachment;FileName=""smime.p7m"""oBodyPart.Fields.Update					
  4. Menggunakan objek CAPICOM EnvelopedData dan penerima sertifikat untuk mengenkripsi konten objek IMessage baru.
  5. Kirim pesan baru, dan membuang asli.

Dengaan signing dan enkripsi pesan

Langkah-langkah yang sama, tetapi urutan penting. Anda harus pertama-tama daftarkan pesan, dan kemudian mengenkripsi pesan.

Kode sampel

Catatan tentang kode contoh

  • Sampel panggilan dua tidak ada fungsi GetCertForSignature dan GetCertForEnvelope. Pemrogram harus mendapatkan sertifikat yang sesuai.
  • Contoh kode memerlukan referensi ke perpustakaan jenis 1.0 CAPICOM, Microsoft perpustakaan objek Data ActiveX 2,5, dan perpustakaan CDO yang sesuai.
'******************************************************************'' SignMessage'' Takes oMsg as input (non-secure message) and returns a new' message that is digitally signed.''******************************************************************Public Function SignMessage(oMsg As CDO.Message) As CDO.Message    Dim oSecMsg As New CDO.Message    Dim oBodyPart As CDO.IBodyPart    Dim oSignedData As New CAPICOM.SignedData    Dim strData As String    Dim strContent As String    Dim oStream As ADODB.Stream    Dim oSigner As New CAPICOM.Signer    Dim oCert As CAPICOM.Certificate    Dim oAttr As New CAPICOM.Attribute    Dim byteData() As Byte        On Error GoTo handle_error        ' Copy input into output message    oSecMsg.DataSource.OpenObject oMsg, cdoIMessage        ' Set up main bodypart    Set oBodyPart = oSecMsg.BodyPart    oBodyPart.ContentMediaType = "application/pkcs7-mime;smime-type=signed-data;name=""smime.p7m"""    oBodyPart.ContentTransferEncoding = "base64"    oBodyPart.Fields("urn:schemas:mailheader:content-disposition") = "attachment;FileName=""smime.p7m"""    oBodyPart.Fields.Update                ' Get certificate    Set oCert = GetCertForSignature(oSecMsg.From)        ' If no cert, throw an error and exit    If oCert Is Nothing Then        MsgBox "No valid certificate found for sender.", , "Error"        Set SignMessage = Nothing    End If        ' Add cert to signer object    oSigner.Certificate = oCert        ' Add signing time attribute to signer object    oAttr.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME    oAttr.Value = Now    oSigner.AuthenticatedAttributes.Add oAttr    ' Sign the content (root bodypart)    strContent = oMsg.BodyPart.GetStream.ReadText    oSignedData.Content = StrConv(strContent, vbFromUnicode)    strData = oSignedData.Sign(oSigner, False, CAPICOM_ENCODE_BINARY)    ' Write the cms blob into the main bodypart    ' let CDO do the base64 encoding    Set oStream = oSecMsg.BodyPart.GetDecodedContentStream        oStream.Type = adTypeBinary    ' Get the string data as a byte array    byteData = strData        ' Write the data to the stream and flush it    oStream.Write byteData    oStream.Flush        GoTo cleanup        ' Report errorhandle_error:    MsgBox Err.Number & ": " & Err.Description, , "Error:"    Set oSecMsg = Nothing        ' Clean up memorycleanup:    Set oBodyPart = Nothing    Set oSignedData = Nothing    Set oStream = Nothing    Set oSigner = Nothing    Set oCert = Nothing    Set oAttr = Nothing        ' Return new message    Set SignMessage = oSecMsgEnd Function'******************************************************************'' EnvelopeMessage'' Takes oMsg as input (non-secure message) and returns a new' message that is enveloped.''******************************************************************Public Function EnvelopeMessage(oMsg As CDO.Message, iCertStore As Integer, Optional strQuery As String) As CDO.Message    Dim oSecMsg As New CDO.Message    Dim oBodyPart As CDO.IBodyPart    Dim oEnvelopedData As New CAPICOM.EnvelopedData    Dim oCert As CAPICOM.Certificate    Dim oStream As ADODB.Stream    Dim strData As String    Dim strContent As String    Dim byteData() As Byte        ' Copy input into output message    oSecMsg.DataSource.OpenObject oMsg, cdoIMessage        ' Set up main bodypart    Set oBodyPart = oSecMsg.BodyPart    oBodyPart.ContentMediaType = "application/pkcs7-mime;smime-type=enveloped-data;name=smime.p7m;"    oBodyPart.ContentTransferEncoding = "base64"    oBodyPart.Fields("urn:schemas:mailheader:content-disposition") = "attachment;FileName=""smime.p7m"""    oBodyPart.Fields.Update        ' Get recipient's cert    If strQuery = "" Then        Set oCert = GetCertForEnvelope(oSecMsg.To, iCertStore)    Else        Set oCert = GetCertForEnvelope(oSecMsg.To, iCertStore, strQuery)    End If        oEnvelopedData.Recipients.Add oCert        ' Encrypt content    strContent = oMsg.BodyPart.GetStream.ReadText    oEnvelopedData.Content = StrConv(strContent, vbFromUnicode)    strData = oEnvelopedData.Encrypt(CAPICOM_ENCODE_BINARY)        ' Write the CMS blob into the main bodypart    ' let CDO do the base64 encoding    Set oStream = oSecMsg.BodyPart.GetDecodedContentStream        oStream.Type = adTypeBinary        ' Get the string data as a byte array    byteData = strData        ' Write the data to the stream and flush it    oStream.Write byteData    oStream.Flush        GoTo cleanup    handle_error:    MsgBox Err.Number & ": " & Err.Description, , "Error:"    Set oSecMsg = Nothing        ' Clean up memorycleanup:    Set oBodyPart = Nothing    Set oEnvelopedData = Nothing    Set oStream = Nothing    Set oCert = Nothing        ' Return new message    Set EnvelopeMessage = oSecMsgEnd Function				

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 280391 - Tinjauan Terakhir: 09/23/2011 20:55:00 - Revisi: 2.0

Microsoft Exchange Server 2003 Enterprise Edition, Microsoft Exchange Server 2003 Standard Edition, Microsoft Exchange 2000 Server Standard Edition, Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Server, Microsoft Windows 2000 Professional Edition, Microsoft Windows XP Professional, Microsoft Windows XP Home Edition

  • kbenv kbhowto kbmsg kbmt KB280391 KbMtid
Tanggapan
/javascript"> Asimov.clickstreamTracker.init();