SSLCERTS
上传用户:coffee44
上传日期:2018-10-23
资源大小:12304k
文件大小:4k
- Peer SSL Certificate Verification
- =================================
- libcurl performs peer SSL certificate verification by default. This is done
- by using CA cert bundle that the SSL library can use to make sure the peer's
- server certificate is valid.
- If you communicate with HTTPS or FTPS servers using certificates that are
- signed by CAs present in the bundle, you can be sure that the remote server
- really is the one it claims to be.
- Until 7.18.0, curl bundled a severely outdated ca bundle file that was
- installed by default. These days, the curl archives include no ca certs at
- all. You need to get them elsewhere. See below for example.
- If the remote server uses a self-signed certificate, if you don't install a CA
- cert bundle, if the server uses a certificate signed by a CA that isn't
- included in the bundle you use or if the remote host is an impostor
- impersonating your favorite site, and you want to transfer files from this
- server, do one of the following:
- 1. Tell libcurl to *not* verify the peer. With libcurl you disable this with
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- With the curl command line tool, you disable this with -k/--insecure.
- 2. Get a CA certificate that can verify the remote server and use the proper
- option to point out this CA cert for verification when connecting. For
- libcurl hackers: curl_easy_setopt(curl, CURLOPT_CAPATH, capath);
- With the curl command line tool: --cacert [file]
- 3. Add the CA cert for your server to the existing default CA cert bundle.
- The default path of the CA bundle used can be changed by running configure
- with the --with-ca-bundle option pointing out the path of your choice.
- To do this, you need to get the CA cert for your server in PEM format and
- then append that to your CA cert bundle.
- If you use Internet Explorer, this is one way to get extract the CA cert
- for a particular server:
- o View the certificate by double-clicking the padlock
- o Find out where the CA certificate is kept (Certificate>
- Authority Information Access>URL)
- o Get a copy of the crt file using curl
- o Convert it from crt to PEM using the openssl tool:
- openssl x509 -inform DES -in yourdownloaded.crt
- -out outcert.pem -text
- o Append the 'outcert.pem' to the CA cert bundle or use it stand-alone
- as described below.
- If you use the 'openssl' tool, this is one way to get extract the CA cert
- for a particular server:
- o openssl s_client -connect xxxxx.com:443 |tee logfile
- o type "QUIT", followed by the "ENTER" key
- o The certificate will have "BEGIN CERTIFICATE" and "END CERTIFICATE"
- markers.
- o If you want to see the data in the certificate, you can do: "openssl
- x509 -inform PEM -in certfile -text -out certdata" where certfile is
- the cert you extracted from logfile. Look in certdata.
- o If you want to trust the certificate, you can append it to your
- cert_bundle or use it stand-alone as described. Just remember that the
- security is no better than the way you obtained the certificate.
- 4. If you're using the curl command line tool, you can specify your own CA
- cert path by setting the environment variable CURL_CA_BUNDLE to the path
- of your choice.
- If you're using the curl command line tool on Windows, curl will search
- for a CA cert file named "curl-ca-bundle.crt" in these directories and in
- this order:
- 1. application's directory
- 2. current working directory
- 3. Windows System directory (e.g. C:windowssystem32)
- 4. Windows Directory (e.g. C:windows)
- 5. all directories along %PATH%
- 5. Get a better/different/newer CA cert bundle! One option is to extract the
- one a recent Mozilla browser uses by running 'make ca-bundle' in the curl
- build tree root, or possibly download a version that was generated this
- way for you:
- http://curl.haxx.se/docs/caextract.html
- Neglecting to use one of the above methods when dealing with a server using a
- certificate that isn't signed by one of the certificates in the installed CA
- cert bundle, will cause SSL to report an error ("certificate verify failed")
- during the handshake and SSL will then refuse further communication with that
- server.