DataFlex
DataFlex
Get a Received Client Certificate (Server Side)
See more Socket/SSL/TLS Examples
Demonstrates Socket.GetRcvdClientCert, which copies a client certificate presented during the TLS handshake of an accepted server-side connection into a Cert object.
The file path is relative to the application's current working directory. An absolute path may also be used. Supply the path appropriate to your own environment.
Background. Use
NumReceivedClientCerts to determine the valid index range. Client certificates are supplied only when the server requests them for mutual TLS.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSocket
String sPfxPassword
Variant vCert
Handle hoCert
Variant vConnectedSock
Handle hoConnectedSock
Integer iNumClientCerts
Variant vClientCert
Handle hoClientCert
Integer i
String sTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatSocket)) To hoSocket
If (Not(IsComObjectCreated(hoSocket))) Begin
Send CreateComObject of hoSocket
End
// The file path is relative to the application's current working directory. An absolute path
// may also be used. Supply the path appropriate to your own environment.
// The PFX password should come from a secure source rather than being hard-coded.
Move "myPfxPassword" To sPfxPassword
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadPfxFile Of hoCert "qa_data/server.pfx" sPfxPassword To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
Get pvComObject of hoCert to vCert
Get ComInitSslServer Of hoSocket vCert To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSocket To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComBindAndListen Of hoSocket 5000 25 To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSocket To sTemp1
Showln sTemp1
Procedure_Return
End
// Accept a client connection. The accepted connection carries any client certificate presented
// during the TLS handshake.
Get Create (RefClass(cComChilkatSocket)) To hoConnectedSock
If (Not(IsComObjectCreated(hoConnectedSock))) Begin
Send CreateComObject of hoConnectedSock
End
Get pvComObject of hoConnectedSock to vConnectedSock
Get ComAcceptNext Of hoSocket 20000 vConnectedSock To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSocket To sTemp1
Showln sTemp1
Procedure_Return
End
// Copy each received client certificate and inspect it.
Get ComNumReceivedClientCerts Of hoConnectedSock To iNumClientCerts
Get Create (RefClass(cComChilkatCert)) To hoClientCert
If (Not(IsComObjectCreated(hoClientCert))) Begin
Send CreateComObject of hoClientCert
End
For i From 0 To (iNumClientCerts - 1)
Get pvComObject of hoClientCert to vClientCert
Get ComGetRcvdClientCert Of hoConnectedSock i vClientCert To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoConnectedSock To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComSubjectCN Of hoClientCert To sTemp1
Showln "Client certificate subject: " sTemp1
Loop
End_Procedure