Firebase cloud functions/ hosting ssl pinning - firebase

My payment gateway requires ssl certificate pinning for their payment gateway endpoint on my side.
Does Firebase support ssl pinning for cloud functions/hosting?
I can't find this information in the official documentation or anywhere else on the net.
Details published in the bank's technical requirements form:
Response URL and Port Number
Specify the Response URL and Port Number for us to send you payment notification.
SSL Certificate:
(To establish secure connection with your Response URL.)
The standard SSL certificate authority are Comodo or Versign.
Please upload the SSL Certificates for both environments that associate with the UAT and Production URL respectively.
SSL certificates can be in format of .cer or .crt or you may zip it in one zip file.
Note: Payment notification will fail to reach you if you provide incorrect SSL Certificate.

What is described here is a really strange requirement -- it sounds like they're telling you you have to provide them with the specific SSL certificate your site is running.
This is unrealistic for nearly all cases as SSL certificates expire after a year, and particularly unrealistic for Firebase Hosting where certificates only last for three months.
You should be able to download the certificate for your Firebase Hosting site (see e.g. this ServerFault question) and upload it to your bank, but the certificate is going to change approximately every two months.
I'd reach out to your bank and ask them more about this requirement, as it seems bizarre and unduly burdensome. Perhaps they are merely trying to ask for the root certificate in the trust chain? If that's the case, you can provide the Let's Encrypt root certificate and it should be fine for the time being (note: Firebase Hosting does not make a promise of keeping the same certificate authority indefinitely).

Related

HTTPS and SSL certificate

I develop a website with Symfony2 and I put it in HTTPS.
I have several questions:
The only way to don't have an error message on my browser when I go to my website is to have an SSL certificate?
How the installation of the SSL certificate on a website works?
Verisign offers SSL certificates from 450€/year ( http://www.symantec.com/fr/fr/page.jsp?id=compare-ssl-certificates ). It's quite expensive. Is there other good solutions to have a cheaper certificate?
If your site is not shop or something commercial, you can get free cert at startssl.com
See awesome tutorail
(Installing certificate in nginx is almost the same with apache)
UPD
Now use letsencrypt :)
Certificates tell the client you can be trusted. Web browsers come loaded with trusted keys from third parties. Your browser checks the key of the cert coming in and if it is in the list it allows SSL connection (if the IP address in the cert etc is correct). This is why it costs as no doubt the cert providers have their own expenses to be added to browsers and to turn a profit etc.
You can of course produce you own certificate but they won't be recognised by your clients machine. The user then has to explicitly accept the cert - some browsers like chrome make this hard as it is a security risk.
Google should help you find the best cert deals from trusted providers.
Your hosting provider should be able to help you set up your cert. If your self hosting that should be its own question as it could have different answers depending on your set up.

API Proxy SSL Assistance

I received the following question. Any help would be greatly appreciated!
What I need to be able to do is configure SSL to validate the target endpoint’s SSL certificate against the base trusted roots (typically provided by the OS and/or Java). There is no documentation that tells me how to turn on SSL certificate validation or if I add a TrustStore if it will guarantee that the SSL cert is validated against that. The only tutorial I see that is related is for SSL Client Auth, which we are not using.
Validation of backend SSL server certificates is explained on this page. Note that the page documents how to achieve mutual authentication, where the gateway would both validate the target server's SSL certificate (which you want), and send a certificate to the target as identification (which you do not want).
To validate the target's certificate, you create a truststore and upload all certificates in the trust chain for your target server. The documentation mentions only uploading the target server's certificate (which works if your target server is using a self-signed cert), but you'll want to upload the entire trust chain of certificates if you are using a non-self-signed cert. Creating and uploading to the truststore is shown in step 6 on the page above.
Then, you'll want the target endpoint configuration to look like this:
<TargetEndpoint name="default>
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<TrustStore>myTruststore</TrustStore>
<IgnoreValidationErrors>false</IgnoreValidationErrors>
</SSLInfo>
<URL>https://myservice.com</URL>
</HTTPTargetConnection>
</TargetEndpoint>
ClientAuthEnabled=false indicates that the gateway will not send a certificate to the target.
IgnoreValidationErrors=false will cause the connection to abort if the certificate returned by the target cannot be validated using the certificates in the truststore. IgnoreValidationErrors=false is the default, so you could leave it out and it would work as desired. However, if you are having problems communicating with your target server, it may be useful during testing to set the ignore flag to true to allow communication even if the certificate fails verification (just to isolate your problem). Just be sure to set it to false in production.
The xsd schema for the SSLInfo element can be found here.

SSL Certificate for multiple servers

I want to use same SSL certificate in multiple servers, which type of SSL certificate should I use? Unified SSL certificate? or Wildcard SSL certificate?
Thanks
Any certificate can be installed on multiple servers but your question requires more information on how you want to be advised.
A wildcard SSL certificate will secure any subdomain that the Wildcard character is on. So if you have a certificate for *.domain.com then you can secure
secure.domain.com
bob.domain.com
charlie.domain.com
and the list can go on, however it won't work for sub.secure.domain.com as the wildcard only does the single level.
A unified certificate, depending on the provider would only give you 3 subdomains.
mail, owa and autodiscover.domain.com
Also a standard certificate you can generally add SAN's too which will allow you to add subdomains under extra costs, but if you are only looking to secure 2 subdomains then a certificate with 1 SAN would be cheaper in most cases than a wildcard.
Give us an example of what you are trying to do and people can probably advise you better.
Securing Multiple Servers With One SSL Certificate
To move your certificate between servers you will need to install the certificate on the same web server that you generated the CSR from. You can then export the SSL certificate and its private key to a PKCS#12 file, or if it is an non-Windows based server you will be able to copy the key and certificate files.
Click HERE for more details:
Wildcard SSL Certificates allow you to secure multiple sub domains on the same domain name, thereby saving you time and money, and of course you do not need to manage multiple SSL Certificates on the same server.

Choose Certificate with Smart Card Authentication IIS7 Server 2008

I am trying to set up smart card authentication for a website that I have created. Setting authentication to Windows and setting SSL to required I can get the smart card reader to pop up when they go to the web site. There are 2 credentials on the card though and only one of them is showing up as an option (the information I need is on the other credential). I asked a co worker and he said in IIS 6 there was a way to specify a location on the smart card to look for certificates. I have been researching this issue for about a week now but haven't been able to find a solution to this issue yet. Does anyone know how to do this?
IIS really only knows about certificate-based authentication, not smart-cards per se (which is really just a form of cert-based authentication). Configure your site to use certificate-based authentication, eg "Require Client Certificates" and IIS will chain the call down to Windows security, which, in turn, recognizes that among the sources for identity certificates is the smartcard reader. Depending upon your site requirements, you may also need to enable Certificate Mapping, which translates certificates into Windows account identities.
When certificates are required (or accepted) IIS will ask for a client cert in the SSL negotiation when the session is started. IIS will send a list of the Certificate Authorities it trusts to the client. The client then takes those and sees which match the list of Certificate Authorities it trusts. It then take sthe list of common entries and checks to see if it has any certs issued by a CA both sides trust. Generally, if there are none it will simply not send a cert and the request fails if the cert is required. If there is just one certificate IE will generally send that without asking the client which cert to send, but it will prompt for a PIN if required. Finally, if there are more than one certificate issued by a CA both sides trust then a dialog box will be presented to the client asking which cert to use.
In this case it sounds like perhaps the credential (certificate) you want the client to send is issued by a Certificate Authority that isn't trusted by one or both sides.

SSL for Rest API

We are providing Rest API(ASP.NET on IIS7) and one of our customers asked for HTTPS. I do not have any experience with SSL and SSL certificates. Is it enough to buy SSL certificate and install it into IIS7 to get secure HTTPS connection? Do I need to make any modifications in Rest API(ASP.NET) code/config files?
please go through below links
http://support.microsoft.com/kb/299875
http://learn.iis.net/page.aspx/144/how-to-set-up-ssl-on-iis/
Yes, we need first create a Certificate request and then we need to Submit that request to any of the Certificate Authority(CA). This may be your own server with Certificate Server 2.0 installed on it or an online CA such as VeriSign. Contact the certificate provider of your choice and determine the best level of certificate for your needs. After that you will get that certificate from that CA and then we need to install that in IIS.

Resources