How Issuer Root CA installed on client machine when client(dynamic) connects first time to server? - authentication

I read about server authentication over web and got to know that issuer Root CA should be imported into Trusted Root CA on both server and client machines for mutual authentication.
Now let's say it is banking application.
The user connects to the bank server for the first time:
Server returns server certificate to validate itself to client.
Client gets the certificate and validate with trusted Root CA authority which has signed this server certificate earlier.
Client sends its certificate and server validate with trusted Root CA
authority which has signed this client certificate earlier.
Now communication starts.
In Step 3 I understand that the trusted Root CA authority is installed on the server when the server gets deployed.
However, in Step 2 when the client machine connects for the first time (and can dynamic connected from any machine), how does the Root CA authority got installed on the client machine?

Root CA certificates are usually preinstalled in operating system and software (when software use its own trust store). Administrators may use their tools to deploy additional roots (which are not common, for example, organization's private roots).

Related

Self-signed certificates and HTTPS Error

I'm creating a Certificate Authority with openssl, and signing my server & client certificate with it (they both are the same).
Installing CA as a Trusted Root CA and Intermediate CA, server certificate - as a Personal one.
Adding server certificate in IIS6, adding bindings - and getting the right https connection via browser on server side.
But on the client side -
Installing CA as a Trusted Root CA and Intermediate CA, client certificate as Personal, server certificate as External.
Checking all the certificates - they are in a working state, CA is connected to client, everything looks normal.
Trying to get via Chrome - I'm getting the connection, but it is unsecured (can't connect to https). (But I still can connect Chrome, and use all the requests in Google Rest Client.)
In IE I'm getting ERR_TUNNEL_CONNECTION_FAILED.
What am I doing wrong here?
SOLVED. Had the same serial_number for both client and server certificates
SOLVED. Had the same serial_number for both client and server certificates

Connect to RethinkDB with TLS

I'm trying to add TLS to a node application connecting to RethinkDB database. I've setup the RethinkDB to use --driver-tls* parameter.
The strange thing to me is that on the client side I need to provide the CA certificate use to sign the certificates used by the server.
Is that root CA certificate can be self-signed or does it have to be signed with a trusted root CA itself?

How can I use a Self Signed Certificate for authentication in IIS 7?

I have an MVC 3 application running on IIS 7 that associates users to their client certificates during registration.
I am currently using an ECA certificate issued by ORC to login to this application locally.
I need to create self signed certificates that I can use to create new users in this application and assign to the self signed certificates.
I have created a self signed Certificate Authority Certificate. I used that certificate to sign a server and client certificate. The Certificate Authority is installed in the Trusted Root Certification Authorities of the Computer Account on the machine I'm using. The Client Certificate is installed in the Personal Store of my account.
With the above configuration, my browsers will only prompt me for the certificate issued by ORC, and not my self-signed certificate. How can I get the browser to prompt me for the self-signed certificate so that all communication with the server will use my self-signed certificate instead of the ORC issued ECA certificate?

Sideloading Windows 8 app in company

I am currently developping a Windows 8 metro app. This app will not be available in the Martketplace but will be distributed by sideloading.
For this it is necessary to sign the app with a certificate and import the same certificate on the client machine.
I never made such a certificate? How should I proceed?
I also read the publisher name of the app should be the same as the publisher name in the certificate...
Who knows how to make such a certificate? A commercial certificate from for example Verisign is currently not an option.
If a commercial (payed for) certificate is not an option there are three other ways to get a certificate:
1) If your company has an own root certificate (trusted by a public Certificate Authority like VeriSign) you (or an admin) can derive a software signing certificate from that.
2) Your company could setup an own certificate server to issue own certificates. If the certificates are only used inside the company and the root certificate is trusted (imported in the certificate store for trusted root authorities) on all machines you could use a software signing certificate derived from the root certificate. See http://www.esecurityplanet.com/network-security/how-to-run-your-own-certificate-authority.html.
3) You could use a self signed test certificate that is not derived from a root certificate. Use makecert to create one (see How do I create a self-signed certificate for code signing on Windows?). When installing the App the user will be asked if he trusts this certificate that has no known publisher.

Certificate from Trusted List of CA not returned by server to client

I have a W2K8 R2 SP1 server hosting an SSL web site requiring client certificate. We have a root certificate (self signed), saved in local machine trusted CA store. On client, browser asks for a client certificate and it works fine.
Now, we have another root certificate that is also saved in local machine trusted CA store. Problem is that the browser does not offer to choose client certificate issued by this root CA.
Reason why browser does not prompt is that server is configured (default option) to return a list of trusted root CA to the client to help it limit the list of client certificates to choose from. If we configure the server so that it does not provide this list (HKLM/system/currentcontrolset/control/securityproviders/schannel/sendtrustedissuerlist=0), the browser has not clue and displays all client certificates and then it works fine.
We had a problem like this in the past because the list of trusted CA was too long and thus was truncated when returned to the client but it's not the case here, only 8 trusted CAs are returned.
Also, if I register this new root CA on another (very similar) server, there it works fine, returned trusted list contains the new CA.
I'm really out of clue why this specific server refuses to return my root CA in the list during SSL negotiation, can someone help please ???
Not sure if this helps you or someone else but according to Microsoft and their Windows Server 2012 documentation your problem seems to be related to this:
"If the Trusted Root Certifictation Authorities store that was used contains a mix of Root (self-signed) and certification authority (CA) Issuer certificates, only the CA Issuer certificates will be sent to the server by default".
Keep on mind that you may use different store for "Certificate Trust List" (CTL). "Client Authentication Issuer" store is being checked/used first (by default on Windows Server 2012) and then if empty "Trusted Root Certifictation Authorities" store.
If you were on 2012, you could have manually configured CTL store, but I don't think that option was present on 2008 R2 (though I might be mistaken).