18

Generally what happens in a HTTPS connections is that client asks for SSL certificate from the SSL compliant server it is communicating with over https. Server will provide a certificate from its key store. After client receives this certificate it validates its credentials depending on whether hostname is same as requested has a verifiable chain of trust ...


15

KASLR and SMEP are kernel-mode protections, applying ASLR to kernel space and enforcing privilege ring boundaries on execution respectively. EMET is solely a user-space protection tool, and as such is not involved with KASLR or SMEP. You should also be aware that EMET is not a magic bullet. It is designed with two goals: to raise the cost of exploit ...


14

It really depends on how your application/site manages the certificates and public keys, i.e. how often are the keys and certificates rotated. For example, if your site rotates the certificates very often, then you'll also need to update your application that often as well, if you are pinning the certificate. Whereas, in this use case, pinning public key ...


12

The power in a certificate is NOT in the certificate. It is in the private key. When a server "uses a certificate", it really uses the private key; and the server shows the certificate (that contains only the public key) to the client. The certificate is a proof that a given public key belongs to a specifically named entity. For instance, the certificate ...


11

Certificate pinning allows to bypass standard certificate authority chains to mitigate the risk of an valid certificate be issued to a criminal. Motivation for a new solution... SSL/TLS certificates are signed by other certificates. Browsers normally recognize a certificate as valid when in some point of this signature chain a trusted entity is found. The ...


11

This type of problem lends itself to Cargo-Cult Security type "solutions". In the real world there is no possible mechanism that can prevent a rogue client from connecting to your service. A VPN is a proven security system that allows trusted clients access to a trusted network, but the internet is inherently untrustworthy. The attacker will have access ...


9

With browsers that have certificate pinning, user-installed root CAs are normally exempted from pinning requirements; if the certificate received doesn't match the pinned certificate or key but is signed by a custom-added CA, the browser doesn't complain. This is done to support the exact scenario here, as well as the scenario where a user decides to MitM ...


9

It depends on what fingerprint you mean. The public key fingerprint is a hash of the public key only. Since the public key stays the same on a simple renewing, this fingerprint will be the same too. The certificate fingerprint as shown in the browser is instead a hash of the complete certificate. Since the contents of the certificate will change to reflect ...


9

You have a couple of options on what to pin. Depending on which one you chose offers you different trade-offs. Here are some typical pins: Pin the certificate itself Yes, you will need to change it when the certificate expires. Most secure but quickly causes availability issues if users don't update often enough. Pin the public key of the certificate This ...


8

Terry Chia answered the question "What is the benefit of rotating certificates so frequently?" fully correct, so there's nothing for me to add. However, I'd like to add a note that Google does frequently change their public keys as well, so the assumption of the cheat sheet is invalid. This does add pretty much confusion and may be part of the reason for ...


8

No, there is no way to bypass certificate pinning without application patching or using debugger (tracer). The reason is that, in simple words, certificate pinning is when a CA certificate is hardcoded into application. This application sets the certificate as the only root of trust to establish a network connection. On Android it's carried out via ...


6

TL;DR: No. That's not how certificates or pinning work. All certificate pinning does is limit the root of the trust chain to a smaller set, for a specific domain. It doesn't change how the certificates work. It only adds a new constraint on acceptable roots, without disabling any others, and they all have to match -- domain name, date, etc., and now pinned ...


6

Does this mean that these applications cease to function completely on corporate and academic networks that utilize SSL inspection, unless the administrator specifically exempts them Yes,You are right the apps that use certificate pinning wont work in an MITM situation.They didnt work when i tried so i think its a fair assumption to make that they wont ...


5

Per this answer, cert pinning can be bypassed on a rooted Android device or jailbroken iOS device. I would go on to state that I think that your approach of trying to secure your application by adding client-side security is doomed to fail. While you can raise the bar of having your application examined via obfuscation and other tricks, as there's no ...


5

I've typically done so by creating a renewal CSR and giving it to the CA. When the CA gives me a new (renewed) certificate and I install it, will it have the same public key as the old certificate? The CA copies the public key from the CSR to the Certificate. When you create the CSR it is up to you what key you put in it. You can choose to use the same key ...


5

Can the same public key be used with RSA, Elliptic Curve, or other asymmetric encryptions algorithms? No. The algorithm is inherent in the key. If not, how is a public key bound to a X.509 Certificate? It is not bound to the certificate, but it is part of the certificate. Presumably, you'd have to know the algorithmic choice before determine a public key,...


4

Yes, generally speaking. The comments have linked you correctly to the mitm proxy documentation for that feature already. If that however is a feature of fiddler I do not know. If it's not in the documentation, go for MITM proxy instead:) This, by the way, is independent of you using certificate pinning; this would work fine without a pinned certificate ...


4

The document you linked to details how the author bypassed pinned certificate validation in two different ways : by disassembling the application, removing the check and rebuilding the APK or by changing the certificate in the application keystore. Both method require a high degree of access to the application. There are no way to fully protect your ...


4

No, it is not possible to determine the state of SSL pinning at the client. SSL pinning is part of the certificate validation done solely inside the client and the only feedback the server gets is if the validation succeeded (connection continues) or not (connection closed, maybe TLS alert). Also there is nothing fully reliable the server could to to "ask" ...


4

The behaviour of HSTS is variable depending on whether the includeSubdomains directive is applied. In the case of HSTS without includeSubDomains, a user visiting www.facebook.com wouldn't protect them if they accidentally went to ww.facebook.com without an explicit HTTPS prefix. However, when the includeSubDomains directive is applied, visiting any subdomain ...


4

To sign the CSR: openssl x509 -req -days 365 -in private.csr -signkey ca.key -out test.crt From man x509: -signkey filename ... If the input is a certificate request then a self signed certificate is created using the supplied private key using the subject name in the request In other words: you are creating a self signed certificate with ca.key ...


4

Securing secure websockets Secure Websockets start life as a standard HTTPS request and only connect if a valid HTTPS connection can be established with the server. As a result, websockets will automatically respect any public key pinning, strict transport policies, etc, which the server sets in the response headers when the client first attempts to ...


4

While mutual TLS and certificate pinning are intended for different problems they can be used to solve the specific problem of detecting active MITM too. Only, with mutual TLS it is the server which detects the MITM (client certificate not as expected) while with certificate pinning it is the client (server certificate not as expected). Implementation ...


4

You can pin leaf, intermediate CA, or root CA. All will work, but each comes with a usability / security tradeoff depending on the details of your setup. The article you link actually gives a fairly good run-down of the differences: Leaf certificate. By pinning against your leaf certificate you are guaranteeing with close to 100% certainty that this is your ...


4

Sounds like a good excuse for you to read up on certificate file formats, and spend some time with openssl or another cert viewer (personally I like KeyStore Explorer) until you figure out what format those files are in, and what format Burp is expecting. For a client cert, usually Burp wants the certificate + matching private key bundled together into a ...


4

It looks like certificates with extended validation provide better protection than certificate pinning, but I'm unsure about this. EV certificates do not offer better protection than pinning but worse. With pinning the client expects a specific certificate, or a specific public key or a specific CA, depending on what exactly was pinned. Without pinning ...


3

It sounds like your use of a self-signed certificate is safe. But any variation in your usage pattern runs risks. For example, if you connect to your server via a web browser or other tool, you will not be able to automatically validate the certificate. You can still do that manually, but it won't be automatic and is somewhat error prone. I suspect that ...


3

From the github readme for the iOS SSL Kill Switch project: Once installed on a jailbroken device, iOS SSL Kill Switch patches low-level SSL functions within the Secure Transport API So your question basically boils down to: "How do I prevent my app from being infected with malware on a rooted / jailbroken device?". In short: you don't. This is why you ...


3

TL;DR yes it is safe provided that you trust the means by which you came across the value stored in PUB_KEY. Here is some background that is needed to first understand the purpose of pinning, and why your scenario allows for ignoring of the error. I'll concentrate specifically on PKI in an ideal implementation. A private key is a very, very large number ...


Only top voted, non community-wiki answers of a minimum length are eligible