Validating a server's certificate
I am writing an app that does an https post of a request and gets a result returned. The company that I am interacting with has a certificate from verisign. I know nothing about certificates! I need to validate their certificate in code as I do this transaction. I need to validate that their cert is current, check the authority and the url. Anyone have an example of this type of action? Do I do this right before the post or does this happen during the post? Sorry I am such a newbie!
Thanks!
Bill
Hello!!!
I've a similar problem. I need validate a client certificate against my server. I'm researching in this field and I've learning some things. You need have one keystore, this is the place where the certificates are stored. In this keystore you need have the CA root certificates (Certificate Authory or similar), so to speak, the trusted certificates (verisign, thawte, etc). Your application trust by default in this entities. You can add more entities when you want, only you need the CA root certificates to import them. Afterwards, you need validate a client certificate against this keystore, so the client cert must have a sign from a CA inside it. Then we're going to validate the cert asking to the keystore if the client cert exists inside it, first look for the same CA root that the client cert have and if this CA root exists then we will look for final client cert, and if this certificate exists then the process will be ok.
This is the process more or less, I'm sorry if I can't explain me better, so you can read more of this in the java tutorial or the JSSE tutorial, or JCE tutorial.
If you have installed J2SE in your machine, you will see the keystore in C:\Documents and Settings\<your_user>\.keystore
and c:\j2sdk1.4.1_02\jre\lib\security\cacert
This is my code, works, but I need do finish it:
package autenticacion;
import java.security.KeyStore;
import java.security.Security;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.*;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPException;
import com.novell.ldap.LDAPJSSESecureSocketFactory;
import com.sun.net.ssl.SSLContext;
import java.io.*;
public class TestCert {
KeyStore keyStore;
String keyStorePath;
char[] keyStorePassword;
public TestCert(){
this.keyStore = null;
this.keyStorePath = "";
this.keyStorePassword = null;
public TestCert(KeyStore keyStore, String keyStorePath, char[] keyStorePassword){
this.keyStore = keyStore;
this.keyStorePath = keyStorePath;
this.keyStorePassword = keyStorePassword;
public static void main( String[] args )
FileInputStream keyStoreIStream = null;
try
String keyStorePath = "D:/JAVA/j2sdk1.4.1_02/jre/lib/security/cacerts";//"c:/Documents and Settings/instalador/.keystore";
char[] keyStorePassword = "changeit".toCharArray();//"password".toCharArray();
String pathFileName = "c:/mykeyFile.cert";
//dynamically set SunJSSE as a security provider
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
// Open the keystore file.
try
// Open the stream to read in the keystore.
keyStoreIStream = new FileInputStream(keyStorePath);
catch( FileNotFoundException e )
// If the path does not exist then a null stream means
// the keystore is initialized empty. If an untrusted
// certificate chain is trusted by the user, then it will be
// saved in the file pointed to by keyStorePath.
keyStoreIStream = null;
// Create a KeyStore Object
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
// Init the Keystore with the contents of the keystore file.
// If the input stream is null the keystore is initialized empty.
keyStore.load(keyStoreIStream, keyStorePassword);
// Close keystore input stream
if(keyStoreIStream != null)
keyStoreIStream.close();
keyStoreIStream = null;
//Array en el que se guardan todos los certificados que nos envien.
//X509Certificate[] chain = (X509Certificate[]) request.getAttribute("java.security.cert.X509Certificate");
//isChainTrusted
TestCert test = new TestCert( keyStore, keyStorePath, keyStorePassword );
X509Certificate[] cert = test.getCertFromFile(pathFileName);
test.getAcceptedIssuers();
System.out.println(test.isChainTrusted(cert));
catch( Exception e )
e.printStackTrace();
System.out.println( "main Error: " + e.toString() );
} finally{
try{
if(keyStoreIStream!=null){
keyStoreIStream.close();
}catch( Exception e){
e.printStackTrace();
System.out.println( "main Error: " + e.toString() );
// getAcceptedIssuers retrieves all of the certificates in the keyStore
// and returns them in an X509Certificate array.
public X509Certificate[] getAcceptedIssuers()
X509Certificate[] X509Certs = null;
try
// See how many certificates are in the keystore.
int numberOfEntry = keyStore.size();
// If there are any certificates in the keystore.
if(numberOfEntry > 0)
// Create an array of X509Certificates
X509Certs = new X509Certificate[numberOfEntry];
// Get all of the certificate alias out of the keystore.
Enumeration aliases = keyStore.aliases();
// Retrieve all of the certificates out of the keystore
// via the alias name.
int i = 0;
while (aliases.hasMoreElements())
String alias = (String)aliases.nextElement();
System.out.println(alias);
X509Certs[i] = (X509Certificate)keyStore.getCertificate(alias);
System.out.println(X509Certs);
i++;
catch( Exception e )
System.out.println( "getAcceptedIssuers Exception: "
+ e.toString() );
X509Certs = null;
return X509Certs;
// isChainTrusted searches the keyStore for any certificate in the
// certificate chain.
private boolean isChainTrusted(X509Certificate[] chain)
boolean trusted = false;
try
// Start with the root and see if it is in the Keystore.
// The root is at the end of the chain.
for (int i = chain.length - 1; i >= 0; i-- )
if (keyStore.getCertificateAlias(chain[i]) != null)
trusted = true;
break;
catch( Exception e )
System.out.println( "isChainTrusted Exception: "
+ e.toString() );
trusted = false;
return trusted;
* Obtiene el certificado de un fichero y lo pasa a un objeto de la clase X509Certificate.
private X509Certificate[] getCertFromFile(String filename){
X509Certificate chain[] = null;
FileInputStream fis = null;
try{
//The following example parses a PKCS#7-formatted certificate reply stored in a file and extracts all the certificates from it:
Vector v = new Vector();
fis = new FileInputStream(filename);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Collection c = cf.generateCertificates(fis);
Iterator i = c.iterator();
while (i.hasNext()) {
X509Certificate cert = (X509Certificate)i.next();
System.out.println(cert);
v.add(cert);
chain = new X509Certificate[v.size()];
chain = (X509Certificate [] ) v.toArray(chain);
} catch (Exception ex){
ex.printStackTrace();
} finally {
try{
fis.close();
}catch (Exception ex){
ex.printStackTrace();
return chain;
If you do finish your code I'd like you tell me something.
Bye.
Similar Messages
-
Steps involved in validating a server's certificate
Hello All,
I'm writing a custom trust manager and wondering if anyone can tell me all the steps that are involved in validating a certificate presented by the server during an SSL handshake. The following are the things I think are must to check if a certificate is valid/trusted.
1. Date verification: The certificate date is valid.
2. Host name verification: The subject's common name matches the host name that your application is trying to connect to.
3. Do you trust the CA: Check if the certificate is signed by a CA that you trust.
Are there any other low level things that we need to check for? I looked at some of the J2SDK code... X509TrustManagerImpl, SimpleValidator etc. and they do a lot of other things which I never thought of. Can some one educate me a bit on this?
I thought of using the default trust manager provided by sun in my own trust manager as suggested in the JSSE reference guide. But I guess, it is hard to find what exactly was the problem for not trusting a certificate as the default implementation always throws CertificateExcption no matter what the case is. Instead, it would be nice to throw sub classes of CertificateException, such as CertificateExpiredException or HostNameNotValidException (This class does not exisits in the the API ofcourse). What are your opinions on this?
Thanks
Sai PullabhotlaDepending on whether or not uour SSL container (eg. servlet etc..) has already done some of these things, but you may want to think about these:
1. IF you use CRL, does the server cert exist in your CRL?
2. In verifying the CA, if there's an intermediate one, you should
also verify that the entire CA chain is valid and trusted by you.
3. Purpose of the server cert. Does it meet your requirement?
4. IF you use and require strong encryption, does the server cert support it? -
SSL Certificate appears valid in Server Admin, but as expired in browsers
I've imported a certificate from Thawte that expires June 29 2008. It shows the correct dates within the Certificates tab of Server Admin, and everthing looks fine, but when I load an https: page on my server, the browser tells me that the certificate expired June 30 2007.
This is a fairly new Mac Pro running OSX 10.5.2 Leopard Server, and Apache 2.2.
If you click on the embedded icon from Thawte that links to their site for verification, it also shows that the certificate is valid.
I've deleted and re-imported it a few times, and rebooted the server, but it always shows as expired in browsers.
Sample page with link to Thawte;
https://cstore.uvic.ca/index-ssl.lasso
Thanks in advance to anyone who can help me get this fixed.
Brad.
Message was edited by: FastCompanyCamelot,
Thanks for the reply. I'm not offended by your suggestion that it's something simple that I've overlooked, rather I'm hoping that it is.
I have selected the certificate on the appropriate site on the web panel. When you visit the site link In my original message, you'll see that the correct certificate is being served, but it appears as expired to the browser, even though it shows as valid in Server Admin.
I also found it in the Keychain utility, and it also shows as a valid certifcate there. I did find an entry in the Keychain utility for an earlier attempt at installing an expired certificate, so I deleted that entry. -
Error in authentication with ldap server with certificate
Hi,
i have a problem in authentication with ldap server with certificate.
here i am using java API to authenticate.
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed.
I issued the new certificate which is having the up to 5 years valid time.
is java will authenticate up to one year only?
Can any body help on this issue...
Regards
Rangasorry i am gettting ythe same error
javax.naming.CommunicationException: simple bind failed: servername:636 exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed]
here when i am using the old certificate and changing the system date means i can get the authentication.
can you tell where we can concentrate and solve the issue..
where is the issue
1. need to check with the ldap server only
2. problem in java code only.
thanks in advance -
Sun.security.validator.ValidatorException: No trusted certificate found
Hello,
I am using Java 1.6.0_04 (JBoss-4.2.2.GA application). My application implements a WS client which needs to integrate with an external Web Service. This communication needs to be handled through https.
I have created a jks keystore with the server certificate, and passed its details to JBoss through the System Properties:
-Djavax.net.ssl.trustStore=/Path-to-file -Djavax.net.ssl.trustStorePassword=password On my development environment I can call the Web Service correctly.
Although, on the production environment, I am getting the following exception:
javax.xml.ws.WebServiceException: java.io.IOException: Could not transmit message
at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:317)
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:255)
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:164)
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:150)
at $Proxy171.send(Unknown Source)
at com.xpto.integration.SmsHelper.send(SmsHelper.java:57)
at com.xpto.services.sms.SMSSenderServiceMBean.run(SMSSenderServiceMBean.java:106)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.IOException: Could not transmit message
at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:204)
at org.jboss.ws.core.client.SOAPRemotingConnection.invoke(SOAPRemotingConnection.java:77)
at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:337)
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:243)
... 6 more
Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker.
at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:
333)
at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:135)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
at org.jboss.remoting.Client.invoke(Client.java:1634)
at org.jboss.remoting.Client.invoke(Client.java:548)
at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:183)
... 9 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No truste
d certificate found
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1591)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:187)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:181)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:975)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:123)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1107)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:405)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLCo
nnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:832)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:23
0)
at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:
275)
... 14 more
Caused by: sun.security.validator.ValidatorException: No trusted certificate found
at sun.security.validator.SimpleValidator.buildTrustedChain(SimpleValidator.java:304)
at sun.security.validator.SimpleValidator.engineValidate(SimpleValidator.java:107)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:2
09)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:2
49)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:954)
... 26 more Both systems are configured with the same JBoss, JVM, ...
The certificate details are:
Owner=
CN=*...., OU=..., O=..., L=..., ST=..., C=PT
Issuer=
CN=..., O=..., C=PT
Version=3
Serial Number=BC81A81843E26C2597CD10354588F61E
Valid From=Monday, 3 March 2008 18:50
Valid Until=Tuesday, 3 March 2009 18:50
Signature Algorithm=SHA1withRSA
Fingerprints=
MD5: 0A:A6:89:92:A4:CF:17:74:7C:4E:20:63:6B:81:AE:85
SHA1: 35:01:74:8C:35:AB:9F:02:7B:23:3F:15:5E:73:C6:4D:DD:BB:C0:7A
Key Usage= critical
List:
. digitalSignature
. keyEncipherment
. dataEncipherment
. keyAgreement
Extended Key Usage= none
On production I have also tried adding the following properties:
-Djavax.net.ssl.keyStore=/Path-to-file -Djavax.net.ssl.keyStorePassword=password But I still get the error.
Any one has any hint for this problem? Is there any property which I can define to ignore untrusted certificates?
Any help would really be welcome.
Thanks in advance.
Best regards,
Victor BatistaHi,
Thanks for your prompt reply.
I have also tried to add all the chain of certificates on my truststore, although I get the exception:
Caused by: java.security.cert.CertificateExpiredException: NotAfter: Fri Mar 07 12:54:22 WET 2008
at sun.security.x509.CertificateValidity.valid(CertificateValidity.java:256)
at sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:570)
at sun.security.validator.SimpleValidator.engineValidate(SimpleValidator.java:123)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:954)
... 26 moreAnd all the certificates are valid.
I really don't understand what is going on.
Can I Ignore expired certificates? Any property?
When I use -Djavax.net.ssl.trustStore pointing to my keystore, will cacerts be also used?
Do I need to import all the certificates in the chain of the server, or the top most is sufficient?
The server where I am having the problem has limited connectivity. It should have connectivity to the issuers of the certificates, in order to validate them, or not?
Thanks in advance,
Victor -
Missing the "Microsoft Exchange Server Auth Certificate"
Hi Everyone,
I have a single Exchange box.
Was integrating my Lync and Exchange and noticed some issues after configuring my Lync pre-reqs: http://technet.microsoft.com/en-us/library/jj721919.aspx
Following the line of communication and event logs, I quickly saw that the error was not on my Lync Server, but on my Exchange. The "Microsoft Exchange Server Auth Certificate" that is created during Ex2013 install was missing.
It was not there to give out tokens for the Server to Server authentication required to integrate Lync, Exchange, and Sharepoint.
Running Get-AuthConfig: http://technet.microsoft.com/en-us/library/jj215766(v=exchg.150).aspx
pointed to a thumbprint that did not exist anymore.
I confirmed this by checking the local cert store (local computer>personal>certificates), looking in the ECP (servers>certificates), and also running Get-ExchangeCertificate
In my Exchange Server event log, I found the following errors:
Log Name: Application
Source: MSExchange Certificate Deployment
Date: 6/8/2014 4:00:50 AM
Event ID: 2005
Task Category: General
Level: Warning
Keywords: Classic
User: N/A
Computer: server.domain.com
Description:
Federation or Auth certificate not found: ED2C3E86EBE821AAC2C0DEA85CAB5787E2CAC5F3. Unable to find the certificate in the local or neighboring sites. Confirm that the certificate is available in your topology and if necessary, reset the certificate on the Federation
Trust to a valid certificate using Set-FederationTrust or Set-AuthConfig. The certificate may take time to propagate to the local or neighboring sites.
Event Xml:
2005
3
1
0x80000000000000
2391484
Application
server.domain.com
ED2C3E86EBE821AAC2C0DEA85CAB5787E2CAC5F3
AND
Log Name: Application
Source: MSExchange OAuth
Date: 6/8/2014 1:25:41 PM
Event ID: 2004
Task Category: Configuration
Level: Warning
Keywords: Classic
User: N/A
Computer: server.domain.com
Description:
Unable to find the certificate with thumbprint ED2C3E86EBE821AAC2C0DEA85CAB5787E2CAC5F3 in the current computer or the certificate is missing private key. The certificate is needed to sign the outgoing token.
Event Xml:
2004
3
2
0x80000000000000
2397430
Application
server.domain.com
ED2C3E86EBE821AAC2C0DEA85CAB5787E2CAC5F3
Googling has only produced one article that is about another issue that I would have found further down the line if I wasn't testing within the pre-reqs. The solution is the same, but the article is somewhat poorly written and does not respond to all
the comments enough to leave one feeling it's 100% correct.
http://blogs.technet.com/b/jenstr/archive/2012/11/22/getting-internal-server-error-500-when-creating...
The broad strokes are clear:
The fix is to create a new "Microsoft Exchange Server Auth Certificate" by using the following sequence of cmdlets In EMS on the MBX server:
1. New-ExchangeCertificate -KeySize 2048 -PrivateKeyExportable $true -SubjectName "cn= Microsoft Exchange Server Auth Certificate" -FriendlyName "Microsoft Exchange Server Auth Certificate" -Services smtp
Do not accept to replace the SMTP certificate when prompted
2. Note the thumbprint of the new certificate. Let us assume it is 7A39541F8DF58D4821967DD8F899B27410F7C081
3. $a=get-date
4. Set-AuthConfig -NewCertificateThumbprint 7A39541F8DF58D4821967DD8F899B27410F7C081 –NewCertificateEffectiveDate $a
Accept to continue despite the fact that the certificate effective date is not 48 hours into the future
5. Set-AuthConfig –PublishCertificate
6. Make sure to remove any potential reference to the previous certificate (which might not exist anymore) by doing Set-AuthConfig -ClearPreviousCertificate.
Remember to do iisreset on both CAS and MBX servers. Then finally, you can try to re-issue the New-CsPartnerApplication cmdlet.
65 Million Dollar question:
Is the syntax in part 1 correct? Two people says to add the domain? Jens responds, but it's vague. What would the correct command look like? I do not know where to add the -DomainName within the command and which name I
should add? The FQDN of the CAS?
New-ExchangeCertificate -KeySize 2048 -PrivateKeyExportable $true -SubjectName "cn= Microsoft Exchange Server Auth Certificate" -FriendlyName "Microsoft Exchange Server Auth Certificate" -DomainName server.domain.com -Services
smtp
Thank you everyoneHi,
Yes, we need to specify a valid FQDN for either the Subject or the DomainName parameter. Please run the following command:
New-ExchangeCertificate -KeySize 2048 -PrivateKeyExportable $true -SubjectName "cn= Microsoft Exchange Server Auth Certificate" -FriendlyName "Microsoft Exchange Server Auth Certificate" -DomainName server.domain.com -Services
smtp
Then following the other steps in your posting to re-create the Microsoft Exchange Server Auth Certificate.
Regards,
Winnie Liang
TechNet Community Support -
The verification of the server's certificate chain failed
Hi All,
Not sure this is the right forum for this but never mind.
I am trying to get abap2GApps working and am having problems with the client certificates.
I am getting the below error in ICM :-
[Thr 06] Mon Jul 30 09:34:47 2012
[Thr 06] *** ERROR during SecudeSSL_SessionStart() from SSL_connect()==SSL_ERROR_SSL
[Thr 06] session uses PSE file "/usr/sap/BWD/DVEBMGS58/sec/SAPSSLC.pse"
[Thr 06] SecudeSSL_SessionStart: SSL_connect() failed
secude_error 9 (0x00000009) = "the verification of the server's certificate chain failed"
[Thr 06] >> Begin of Secude-SSL Errorstack >>
[Thr 06] ERROR in ssl3_get_server_certificate: (9/0x0009) the verification of the server's certificate chain failed
ERROR in af_verify_Certificates: (24/0x0018) Chain of certificates is incomplete : "OU=Equifax Secure Certificate Authority, O=E
ERROR in get_path: (24/0x0018) Can't get path because the chain of certificates is incomplete
[Thr 06] << End of Secude-SSL Errorstack
[Thr 06] SSL_get_state() returned 0x00002131 "SSLv3 read server certificate B"
[Thr 06] SSL NI-sock: local=172.30.7.170:59036 peer=172.30.8.100:80
[Thr 06] <<- ERROR: SapSSLSessionStart(sssl_hdl=60000000053910f0)==SSSLERR_SSL_CONNECT
[Thr 06] *** ERROR => IcmConnInitClientSSL: SapSSLSessionStart failed (-57): SSSLERR_SSL_CONNECT {000726d5} [icxxconn_mt.c 2031]
Having already got the accounts.google.com SSL certificate chain installed and working I can't get the docs.google.com SSL chain working.
For accounts.google.com they use (this set works) :-
1) CN=accounts.google.com, O=Google Inc, L=Mountain View, SP=California, C=US
2) CN=Thawte SGC CA, O=Thawte Consulting (Pty) Ltd., C=ZA
3) OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
For docs.google.com they use a different set of SSL certs. :-
1) CN=*.google.com, O=Google Inc, L=Mountain View, SP=California, C=US
2) CN=Google Internet Authority, O=Google Inc, C=US
3) OU=Equifax Secure Certificate Authority, O=Equifax, C=US
Can anyone explain what I am doing wrong or how to correct this?
Thanks
CraigFurther UPDATE
After removing every certificate related to docs.google.com I still get the same error!
I have even tried downloading the root certificate directly from GeoTrust themselves and yet I still get the same error.
I have even resorted to running SAP program ZSSF_TEST_PSE from note 800240 to check the PSE and all is well!
Referring to SAP Note 1318906 suggests I am missing a certificate in the chain but I am not!
"Situation: The ICM is in the client role and the following entry is displayed in the trace:
ERROR in ssl3_get_server_certificate: (9/0x0009) the verification of the server's certificate chain failed
Reason:You try to set up a secure connection to a server, but the validity of the certificate cannot be verified because the required certificates are not available.
Solution:The missing certificates are listed in the trace file. You must use transaction STRUST to insert these certificates in the Personal Security Environment (PSE) that is used for the connection. The certificates are usually made available to you by the server administrator. If the certificates are public Certification Authority (CA) certificates, you can also request the certificates there."
What could possibly causing this?
Please help!
Craig -
Microsoft Exchange Server Auth Certificate Error
I have new install the Exchange server 2013. I accidentally assigned the IIS service to the Microsoft Exchange Auth Certificate. now i'm facing problem to connect exchange server from outlook.
The Error shows
"There is a problem with the proxy server's security certificate. The name on the security certificate is invalid or does not match the name of the target site
name. Outlook is unable to connect to the proxy server. (Error Code 10)."
Certificate shows error
"This CA root Certificate is nit trusted because it is not in the Trusted Root Certificate Authorities store"
Please help me...
ThanksHI Winnie,
if i use root CA from AD CA can solve this issue?
Please see the result:
[PS] C:\Windows\system32>Get-ExchangeCertificate | FL
AccessRules : {System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule}
CertificateDomains : {DBH-EX01, DBH-EX01.deltabrac.com}
HasPrivateKey : True
IsSelfSigned : True
Issuer : CN=Microsoft Exchange Server Auth Certificate
NotAfter : 12/19/2018 12:37:13 PM
NotBefore : 12/19/2013 12:37:13 PM
PublicKeySize : 2048
RootCAType : None
SerialNumber : 30F29F3C289D448A4244C95D267B9976
Services : IMAP, POP, SMTP
Status : Valid
Subject : CN=Microsoft Exchange Server Auth Certificate
Thumbprint : 514DDBBDAB0878766B9D305A0D500CBEA334E109
AccessRules : {System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule}
CertificateDomains : {}
HasPrivateKey : True
IsSelfSigned : True
Issuer : CN=Microsoft Exchange Server Auth Certificate
NotAfter : 12/18/2018 3:51:00 PM
NotBefore : 12/18/2013 3:51:00 PM
PublicKeySize : 2048
RootCAType : None
SerialNumber : 2AAA1A565B385794473CE3AC8D3A85F4
Services : IIS, SMTP
Status : Valid
Subject : CN=Microsoft Exchange Server Auth Certificate
Thumbprint : 5E6026E8C9CC18BFE3684E58CD2876AC97A2514D
AccessRules : {System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule}
CertificateDomains : {DBH-EX01, DBH-EX01.deltabrac.com}
HasPrivateKey : True
IsSelfSigned : True
Issuer : CN=DBH-EX01
NotAfter : 12/11/2018 7:25:05 PM
NotBefore : 12/11/2013 7:25:05 PM
PublicKeySize : 2048
RootCAType : Registry
SerialNumber : 1C611FA9102B64B3462A0100FEF74A12
Services : IMAP, POP, IIS, SMTP
Status : Valid
Subject : CN=DBH-EX01
Thumbprint : 2FD1A8D2141DCA036F3DD5BE1191FD1FB6966EE9
AccessRules : {System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule,
System.Security.AccessControl.CryptoKeyAccessRule}
CertificateDomains : {WMSvc-DBH-EX01}
HasPrivateKey : True
IsSelfSigned : True
Issuer : CN=WMSvc-DBH-EX01
NotAfter : 12/9/2023 5:03:46 PM
NotBefore : 12/11/2013 5:03:46 PM
PublicKeySize : 2048
RootCAType : Registry
SerialNumber : 4013857FC4683FA940C6DCC87A83A05F
Services : None
Status : Valid
Subject : CN=WMSvc-DBH-EX01
Thumbprint : BAE5A99C48FDFDBDBDE1E158833F862BB977DC01 -
SCCM 2007 Site Server Signing Certificate - Any Way to Extend Life of Template
Good morning,
It looks like my Site Server Signing certificate can't be renewed past the five year validity that the template was given. So, come Feb. 14th, I can't renew my existing Site Server Signing certificate. Is there any way to extend the life of the
certificate template so I can just "renew" the existing certificate on my server as opposed to creating and distributing a new one? Thanks for any help anyone can provide.Good morning,
It looks like my Site Server Signing certificate can't be renewed past the five year validity that the template was given. So, come Feb. 14th, I can't renew my existing Site Server Signing certificate. Is there any way to extend the life of the
certificate template so I can just "renew" the existing certificate on my server as opposed to creating and distributing a new one? Thanks for any help anyone can provide. -
Hello,
I'm connecting with java mail to a smtp server which offers STARTTLS. I would like to know if there is a way to get the server's certificate to my application using the java mail API. Basically, I just want to show the server certificate in the same way the openssl command does it :
openssl s_client -connect 192.168.0.1:25 -starttls smtp -showcerts EDIT: ok I think I have to do this on a lower level with a SSL Socket:
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
SSLSocket socket = (SSLSocket) factory.createSocket("127.0.0.1", 8888);
socket.startHandshake();
SSLSession session = socket.getSession();
java.security.cert.Certificate[] servercerts = session.getPeerCertificates()The problem is that when I do not have the remote certificate in my keystore, the "startHandshake" will fail. What I want to do is to offer the user the possibility to accept/refuse the certificate. How can I do this ?
EDIT2: I did the following workaround by implementing a dummy X509TrustManager : http://forums.sun.com/thread.jspa?threadID=183410
But now I don't know how to 1st connect in clear, then issue STARTTLS and then use a SSL socket to get the certificate.
Thanks,
Tex
Edited by: Tex-Twil on Jul 13, 2010 2:31 AM
Edited by: Tex-Twil on Jul 13, 2010 2:56 AMI think I found a solution. Basically I connect manually to the smtp using a normal socket, issue "EHLO" and "STARTTLS" commands. Then I wrap the clear socket into a SSL Socket and start the handshake. Then I can get the certificates:
public static void main(String[] args) {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Socket clearSocket = null;
PrintWriter out = null;
BufferedReader in = null;
clearSocket = new Socket("192.168.0.1", 25);
out = new PrintWriter(clearSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clearSocket.getInputStream()));
readServerResponse(in);
out.println("ehlo test");
readServerResponse(in);
out.println("starttls");
readServerResponse(in);
// SSL
TrustManager[] tm = { new RelaxedX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, tm, new java.security.SecureRandom());
SSLSocketFactory factory = sslContext.getSocketFactory();
SSLSocket sslSocket = (SSLSocket)factory.createSocket(clearSocket, "192.168.0.1", 25, true);
sslSocket.startHandshake();
Certificate[] servercerts = sslSocket.getSession().getPeerCertificates();
private static String readServerResponse(BufferedReader in) throws IOException {
String serverResponse = null;
String line = null;
StringBuffer buf = new StringBuffer(100);
do {
line = in.readLine();
if (line == null) {
serverResponse = buf.toString();
if (serverResponse.length() == 0)
serverResponse = "[EOF]";
buf.append(line);
buf.append("\n");
while (isNotLastLine(line));
System.out.println(buf.toString());
return buf.toString();
class RelaxedX509TrustManager implements X509TrustManager {
public boolean isClientTrusted(java.security.cert.X509Certificate[] chain) {
return true;
public boolean isServerTrusted(java.security.cert.X509Certificate[] chain) {
return true;
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
public void checkClientTrusted(java.security.cert.X509Certificate[] chain) {
public void checkServerTrusted(java.security.cert.X509Certificate[] chain) {
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
} -
Use custom not ConfigMgr SQL Server Identification Certificate
Hello,
I noticed that during the database creation steps in System Center 2012 Configuration Manager, the SQL server's instance gets assigned a SSL Certificate called ConfigMgr SQL Server Identification Certificate. I currently have one that
I have assigned by our own PKI solution as I am pointing this to our SQL cluster.
Is there anyway to use my PKI issued certificate over the self-signed one that gets deployed by System Center during the installation process? When I use my own PKI issued certificate, System Center is unable to connect saying there is an issue with
the certificate (which I know is untrue as other applications can communicate to the cluster fine with my PKI issued certificate).
Thanks in advance!Hi,
This technet article might be of more help.
PKI Certificate Requirements for Configuration Manager
http://technet.microsoft.com/en-us/library/gg699362.aspx
We
are trying to better understand customer views on social support experience, so your participation in this
interview project would be greatly appreciated if you have time.
Thanks for helping make community forums a great place. -
How to get a server chain certificate
Hi all,
I'm installing SSL on Bea Logic server 6.0, but i dont know how to get a server
chain certificate.
Does any body know how to get this certificate?
Also, I read in the e-docs site that we can use utility der2pem and vice versa
to convert between them, but i odnt know where to get the tools.(It's not in the
utils.jar)
thanks for any answer.
UyHi all,
I'm installing SSL on Bea Logic server 6.0, but i dont know how to get a server
chain certificate.
Does any body know how to get this certificate?
Also, I read in the e-docs site that we can use utility der2pem and vice versa
to convert between them, but i odnt know where to get the tools.(It's not in the
utils.jar)
thanks for any answer.
Uy -
Error: -26 Detail: no valid destination server available for '!ALL' rc=14
Hello,
i can access portal, but when i click on a link i receive the error message bellow:
500 Dispatching Error
Error: -26
Version: 7000
Component: HTTP_ROUTE
Date/Time: Thu May 27 11:18:55 2010
Module: http_route.c
Line: 3139
Server: PCLIWDI1_WDP_01
Error Tag:
Detail: no valid destination server available for '!ALL' rc=14
u00A9 2001-2009, SAP AG
the web dispatcher is UP,
on instance profile on web dispatcher , i have data bellow:
SAPSYSTEMNAME = WDP
SAPGLOBALHOST = PCLIWDI1
SAPSYSTEM = 01
INSTANCE_NAME = W01
DIR_CT_RUN = $(DIR_EXE_ROOT)\$(OS_UNICODE)\NTAMD64
DIR_EXECUTABLE = $(DIR_CT_RUN)
Accesssability of Message Server
rdisp/mshost = pclieci1.oranginagroup.net
ms/http_port = 8080
Configuration for large scenario
icm/max_conn = 16384
icm/max_sockets = 16384
icm/req_queue_len = 6000
icm/min_threads = 100
icm/max_threads = 250
mpi/total_size_MB = 500
mpi/max_pipes = 21000
SAP Web Dispatcher Ports
##icm/server_port_0 = PROT=HTTP,PORT=1080
Capgemini - RGC. SSL
DIR_INSTANCE = G:\usr\sap\secudir
DIR_HOME = G:\usr\sap\WDP\W01\work
icm/server_port_0 = PROT=HTTP,PORT=8001
icm/server_port_1 = PROT=HTTPS,PORT=1080
icm/HTTPS/verify_client = 0
wdisp/ssl_encrypt = 0
wdisp/add_client_protocol_header = true
wdisp/shm_attach_mode = 6
ssl/ssl_lib = G:\usr\sap\secudir\sapcrypto.dll
ssl/server_pse = G:\usr\sap\secudir\SAPSSLS.pse
is/http/default_root_hdl = abap
#icm/HTTP/redirect_0 = PREFIX=/sap/bc/gui/sap/its/webgui, HOST=pclieci1.oranginagroup.net, PORT=1080
i have the same error when i lunch https://WDISERV:1080
Thank's for helpFollowing the check i did, please find out the result:
C:\Users\wdpadm>sapwebdisp pf=G:\usr\sap\WDP\SYS\profile\WDP_W01_PCLIWDI1 -check
config
Checking SAP Web Dispatcher Configuration
=========================================
maximum number of sockets supported on this host: 32768
Server info will be retrieved from host: pclieci1.oranginagroup.net:8080 with pr
otocol: http
Checking connection to message server...OK
Retrieving server info from message server...OK
Message Server instance list:
------++--
+
instance name
hostname
HTTP port
HTTPS port
------++--
+
------++--
+
ERROR: no servers in list
Check ended with 1 errors, 0 warnings -
Validating Essbase server connection
Hello Everyone
I installed and configured EPM 11.1.2.2. After running the validate.bat file I found the error for validation Essbase server connection to my server name. The error is as follows
FAILED
EAS: Essbase Server
Validating Essbase Server startup using MaxL command
Error: EPMVLD-01010: Cannot connect to Essbase Server using MaxL.
Recommended Action: Check Essbase Server is started.
68 seconds
FAILED
EAS: Essbase Server
Validating Essbase Server connection to EPM122
Error: Cannot connect to olap service. Cannot connect to Essbase Server at "EPM122:1423". Network error [10061]: Failed to connect to [EPM122:1423]
Recommended Action: Check Essbase Server is started.
16 seconds
Please Provide me a solution for this errorThanks John for addressing my issue
yes I've checked the logs
The Essbase agent log is the one I was interested into. The logs are as follows
Fatal Error: Unexpected Condition detected at Shared Services, please check Essbase.log
[Thu Jun 20 22:58:14 2013]Local/ESSBASE0///5064/
Info(1051283)
Retrieving License Information Please Wait...
[Thu Jun 20 22:58:14 2013]Local/ESSBASE0///5064/Info(1051286)
License information retrieved.
[Thu Jun 20 22:58:15 2013]Local/ESSBASE0///5064/Info(1311019)
Classpath during JVM initialization: [;C:\Oracle\Middleware\EPMSystem11R1\common\jlib\11.1.2.0\epm_j2se.jar;C:\Oracle\Middleware\EPMSystem11R1\products\Essbase\EssbaseServer\java\essbase.jar;C:\Oracle\Middleware\EPMSystem11R1\products\Essbase\EssbaseServer\java\essbaseRegistry.jar]
[Thu Jun 20 22:59:00 2013]Local/ESSBASE0///5064/Info(1051199)
Single Sign-On Initialization Succeeded !
[Thu Jun 20 22:59:00 2013]Local/ESSBASE0///5064/Info(1056815)
Essbase - Release 11.1.2 (ESB11.1.2.2.100B2166)
[Thu Jun 20 22:59:00 2013]Local/ESSBASE0///5064/Info(1051232)
Using English_UnitedStates.Latin1@Binary as the Essbase Locale
[Thu Jun 20 22:59:01 2013]Local/ESSBASE0///5064/Error(1051518)
Essbase global application does not exist at Shared Services -
WRVS4400n, QuickVPN, Server's certificate doesn't exist on local computer
Hi,
I bought a new WRVS400n recently because it had Gigabit speed, wireless n and a built in VPN server. The device works perfect except for the Quick VPN client. I'm a system engineer so I thought I could set it up quite easy just like any other device I configured in the past. Painfull but it isn't like this.
I set up the VPN on the WRVS4400n and generated a certificate. I saved both the client and admin certificate to my pc, I gave them a name to easily make up the difference between both of them. When placing the certificate in the installed QuickVPN folder, it doesn't seem to get recognised by the QuickVPN software. When I try to connect, it says 'Server's certificate doens't exist on your local computer'. I guess the naming convention must meet some kind of format, is that correct? If so, this should have been described in the documentation.
Besides that I checked if the required ports used by the VPN server are open on the public port of the device, that is the case. So It seems I'm quite close to get it working.
The version of QuickVPN I used is 1.4.2.1. The WRVS4400n has the latest firmware loaded.
Kind regards,
Pieter.>I set up the VPN on the WRVS4400n and generated a certificate. I saved both the client and admin certificate to my pc
The "certificate for client" should be saved as a .pem file and copied into the install directory of QuickVPN client.
The "certificate for admin" is used as a backup, which can be used to re-provision the router in case admin needs to reset the router to factory default for any reason.
Maybe you are looking for
-
How can I control fan speeds in Win7 on a MBP-R for gaming?
I have a MacBook Pro with Retina Display. It has had Windows 7 installed and I want to play some 3D action games. How do I stop internal parts from overheating? I intend to use a USB cooling pad but that'll do nothing if the internal fans remain at i
-
Adobe Indesign and Photoshop not opening in Rosetta?
Just bought a brand new iMac intel model and I've installed my 8 month old Adobe Creative suite that I used on my G5 iMac. Instalation went smoothly, but none of the apps open. I double click on them in usual way, I get two hops of the app icon on th
-
Hello I was wondering if anyone could tell me how to take a black and white photo and make a part of it in color? I have the trial thing for Lightroom because I am trying to figure out which one I want between Lightroom and Elements? Any help would
-
Change control reviews to be SOX compliant
Hi all, please can anyone provide me with info on how to Performe change control reviews to be SOX compliant on a weekly basis (Auditing Information System and Management Internal Control) email: [email protected] Thank you, sam
-
I can still load it with the script running or attempting to run in the background but it makes firefox tremendously slow. After I click on stop running the script then everything seems to be ok. how do I get the script not to run in the first place.