public emsSSLSampleClient(string[] args) { if (topicName == null) { System.Console.WriteLine("Error: must specify topic name"); } System.Console.WriteLine("Global SSL parameters sample with Microsoft Cerrtificate Store."); try { // System Store Info object to be used while setting the store type for a connection factory via the // ConnectionFactory.SetCertificateStoreType. The store info consists of the store location, store name, // the certificate name (to look for in the specified store name at the specified store location). // The default store location is StoreLocation.CurrentUser and the default store name is 'my' store as defined by the .NET framework. // The search criteria to find the certificate in the store name at the store location is X509FindType.FindBySubjectDistinguishedName. EMSSSLSystemStoreInfo storeInfo = new EMSSSLSystemStoreInfo(); // set trace for client-side operations, loading of certificates // and other if (ssl_trace) { EMSSSL.SetClientTracer(new System.IO.StreamWriter(System.Console.OpenStandardError())); } // Set the target host name. // This is a required parameter for all.NET SSL connections.Because System.Net.Security.SslStream // requires a target host, this value is required. // // The name of the server as defined in the server's certificate. Usually the server's HostName // is specified as the CN in the server's certificate. This value must match the name on the // server's certificate server name. if (ssl_target_hostname != null) { EMSSSL.SetTargetHostName(ssl_target_hostname); } // Set location of the certificate store // The certificate store location indicates where to lookup the certificate by name. If no store name is specified, // then the default store name is "My" store name within this store location. // storeLocation Location in which to lookup certificate by name. For example, "CurrentUser" or "LocalMachine." if (ssl_cert_store_location != null) { if (ssl_cert_store_location.Equals("currentuser")) { storeInfo.SetCertificateStoreLocation(StoreLocation.CurrentUser); } else if (ssl_cert_store_location.Equals("localmachine")) { storeInfo.SetCertificateStoreLocation(StoreLocation.LocalMachine); } } // Set the certificate store name // This is the name of the store in which certificates are stored. During the SSL handshake, // this is where the client library looks for the certificates. if (ssl_cert_store_name != null) { storeInfo.SetCertificateStoreName(ssl_cert_store_name); } // Set the name of the certificate as a full subject DN // This method sets the name of the certificate. The certificate name is the subject distinguished name of the certificate. // During the SSL handshake, the server searches for the named certificate in the store specified by SetCertificateStoreName // at the location specified by SetCertificateStoreLocation. The search criteria to find the certificate in the store name // at the store location is X509FindType.FindBySubjectDistinguishedName. // A subject DN sample // [email protected], CN=client, OU=client Unit, O=Test Company, L=us-english, S=California, C=US if (ssl_cert_name != null) { storeInfo.SetCertificateNameAsFullSubjectDN(ssl_cert_name); } // Set the store type for ALL the connection factories // If the store type is EMSSSL_STORE_TYPE_SYSTEM, then storeInfo must be an EMSSSLSystemStoreInfo object. If the store type is // EMSSSL_STORE_TYPE_FILE, then storeInfo must be an EMSSSLFileStoreInfo object. // The type of certificate store. Can be either EMSSSL_STORE_TYPE_SYSTEM or EMSSSL_STORE_TYPE_FILE. See EMSSSLStoreType details. EMSSSL.SetCertificateStoreType(EMSSSLStoreType.EMSSSL_STORE_TYPE_SYSTEM, storeInfo); } catch (Exception e) { System.Console.WriteLine(e.StackTrace); if (e is EMSException) { EMSException je = (EMSException)e; if (je.LinkedException != null) { System.Console.WriteLine("##### Linked Exception:"); System.Console.WriteLine(je.LinkedException.StackTrace); } } } try { ConnectionFactory factory = new ConnectionFactory(serverUrl); //How can I wrap this to ignore self signed certs mistrust // this does not work for our issues.... ServicePointManager.ServerCertificateValidationCallback = delegate( object obj, X509Certificate certificate, X509Chain chain, System.Net.Security.SslPolicyErrors errors) { return(true); }; Connection connection = factory.CreateConnection(userName, password); Session session = connection.CreateSession(false, TIBCO.EMS.SessionMode.AutoAcknowledge); Topic topic = session.CreateTopic(topicName); MessageProducer publisher = session.CreateProducer(topic); MessageConsumer subscriber = session.CreateConsumer(topic); connection.Start(); MapMessage message = session.CreateMapMessage(); message.SetStringProperty("field", "SSL message"); for (int i = 0; i < 3; i++) { publisher.Send(message); System.Console.WriteLine("\nPublished message: " + message); /* read same message back */ message = (MapMessage)subscriber.Receive(); if (message == null) { System.Console.WriteLine("\nCould not receive message"); } else { System.Console.WriteLine("\nReceived message: " + message); } try { System.Threading.Thread.Sleep(1000); } catch (Exception) { } } connection.Close(); } catch (EMSException e) { System.Console.WriteLine("##### Exception:" + e.Message); System.Console.WriteLine(e.StackTrace); if (e.LinkedException != null) { System.Console.WriteLine("##### Linked Exception error msg:" + e.LinkedException.Message); System.Console.WriteLine("##### Linked Exception:"); System.Console.WriteLine(e.LinkedException.StackTrace); } } }
public emsSSLSampleClient(string[] args) { if (topicName == null) { System.Console.WriteLine("Error: must specify topic name"); usage(); } System.Console.WriteLine("Global SSL parameters sample with Microsoft Certificate Store."); try { EMSSSLSystemStoreInfo storeInfo = new EMSSSLSystemStoreInfo(); //EMSSSLFileStoreInfo storeInfo = new EMSSSLFileStoreInfo(); // set trace for client-side operations, loading of certificates // and other if (ssl_trace) { EMSSSL.SetClientTracer(new System.IO.StreamWriter(System.Console.OpenStandardError())); } // set target host name in the sertificate if specified if (ssl_target_hostname != null) { EMSSSL.SetTargetHostName(ssl_target_hostname); } if (ssl_cert_store_location != null) { if (ssl_cert_store_location.Equals("currentuser")) { storeInfo.SetCertificateStoreLocation(StoreLocation.CurrentUser); } else if (ssl_cert_store_location.Equals("localmachine")) { storeInfo.SetCertificateStoreLocation(StoreLocation.LocalMachine); } } if (ssl_cert_store_name != null) { storeInfo.SetCertificateStoreName(ssl_cert_store_name); } if (ssl_cert_name != null) { storeInfo.SetCertificateNameAsFullSubjectDN(ssl_cert_name); } EMSSSL.SetCertificateStoreType(EMSSSLStoreType.EMSSSL_STORE_TYPE_SYSTEM, storeInfo); } catch (Exception e) { System.Console.WriteLine(e.StackTrace); if (e is EMSException) { EMSException je = (EMSException)e; if (je.LinkedException != null) { System.Console.WriteLine("##### Linked Exception:"); System.Console.WriteLine(je.LinkedException.StackTrace); } } //System.Environment.Exit(-1); } try { ConnectionFactory factory = new ConnectionFactory(serverUrl); //factory.SetSSLTrace(true); factory.SetConnAttemptCount(1); factory.SetConnAttemptDelay(1000); factory.SetConnAttemptTimeout(1000); Connection connection = factory.CreateConnection(userName, password); Session session = connection.CreateSession(false, TIBCO.EMS.SessionMode.AutoAcknowledge); Topic topic = session.CreateTopic(topicName); MessageProducer publisher = session.CreateProducer(topic); MessageConsumer subscriber = session.CreateConsumer(topic); connection.Start(); MapMessage message = session.CreateMapMessage(); message.SetStringProperty("field", "SSL message"); for (int i = 0; i < 3; i++) { publisher.Send(message); System.Console.WriteLine("\nPublished message: " + message); /* read same message back */ message = (MapMessage)subscriber.Receive(); if (message == null) { System.Console.WriteLine("\nCould not receive message"); } else { System.Console.WriteLine("\nReceived message: " + message); } try { System.Threading.Thread.Sleep(1000); } catch (Exception) { } } connection.Close(); } catch (EMSException e) { System.Console.WriteLine("##### Exception Connect:" + e.Message); System.Console.WriteLine(e.StackTrace); if (e.LinkedException != null) { System.Console.WriteLine("##### Linked Exception error msg:" + e.LinkedException.Message); System.Console.WriteLine("##### Linked Exception:"); System.Console.WriteLine(e.LinkedException.StackTrace); } //System.Environment.Exit(-1); } }