I'm trying to use curl to get the HTTP status of a GET request:
curl --insecure --silent --show-error --connect-timeout 1 -I Note: I'm using the --insecure flag in this command.
I get the following output:
HTTP/1.1 403 Forbidden
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Accept-Ranges: bytes
Last-Modified: Wed, 16 May 2012 03:05:24 GMT
Content-Type: text/html
Content-Length: 1234
Date: Wed, 16 May 2012 08:57:30 GMTWhen I navigate to this URL in a browser, it works fine and I get a 200 OK.
How can get a 200 OK from the curl command? Can I export the PEM cert from the browser and use it some way?
2 Answers
You can export the cert from your browser and use it with cURL. From the man page :
1-E, --cert [certificate][:password]
(SSL) Tells curl to use the specified client certificate file when getting a file with HTTPS, FTPS or another SSL-based protocol. The certificate must be in PEM format. If the optional password isn't specified, it will be queried for on the terminal. Note that this option assumes a "certificate" file that is the private key and the private certificate concatenated! See --cert and --key to specify them independently.
If curl is built against the NSS SSL library then this option can tell curl the nickname of the certificate to use within the NSS database defined by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be loaded. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.
If this option is used several times, the last one will be used.
Pre-requisites:-
- Tested on SLES11sp4
- Download openssl-1.1.1.tar.gz ()
- Download curl-7.61.1.tar.bz2()
- Install “gcc” from OS repository.
How to:-
1)Extract openssl tarball
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1/
./config
make
make install
2)Now work on curl.Extract tarball and configure with openssl compatibility
cp curl-7.61.1.tar.bz2 /opt/
cd /opt
tar -jxvf curl-7.61.1.tar.bz2
cd curl-7.61.1/
env PKG_CONFIG_PATH=/usr/local/ssl ./configure --with-ssl
make
make install
3)Add new path to new “loader libraries”
echo “/opt/openssl-1.1.1/ssl” >>/etc/ld.so.conf
ldconfig
4)Make new curl as default one.
ln -s /opt/curl-7.61.1/src/curl /usr/bin/curl
5)Check the version of curl
Server:~# curl --version
curl 7.61.1 (x86_64-pc-linux-gnu) libcurl/7.61.1 OpenSSL/1.1.1 zlib/1.2.7
Release-Date: 2018-09-05
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy
Done
#
#
#
Thank you,