1
0
mirror of synced 2025-04-19 00:24:02 +03:00

Changed the server certificate verification API

This commit is contained in:
yhirose 2019-05-07 16:54:51 -04:00
parent 03a577cccd
commit b08e22ab00
3 changed files with 8 additions and 6 deletions

View File

@ -209,6 +209,8 @@ SSL support is available with `CPPHTTPLIB_OPENSSL_SUPPORT`. `libssl` and `libcry
SSLServer svr("./cert.pem", "./key.pem"); SSLServer svr("./cert.pem", "./key.pem");
SSLClient cli("localhost", 8080); SSLClient cli("localhost", 8080);
cli.set_ca_cert_path("./ca-bundle.crt");
cli.enable_server_certificate_verification(true);
``` ```
Zlib Support Zlib Support

View File

@ -17,7 +17,7 @@ int main(void) {
httplib::SSLClient cli("localhost", 8080); httplib::SSLClient cli("localhost", 8080);
// httplib::SSLClient cli("google.com"); // httplib::SSLClient cli("google.com");
cli.set_ca_cert_path(CA_CERT_FILE); cli.set_ca_cert_path(CA_CERT_FILE);
cli.skip_server_certificate_verification(true); cli.enable_server_certificate_verification(true);
#else #else
httplib::Client cli("localhost", 8080); httplib::Client cli("localhost", 8080);
#endif #endif

View File

@ -396,7 +396,7 @@ public:
virtual bool is_valid() const; virtual bool is_valid() const;
void set_ca_cert_path(const char *ca_cert_path); void set_ca_cert_path(const char *ca_cert_path);
void skip_server_certificate_verification(bool skip); void enable_server_certificate_verification(bool enabled);
long get_openssl_verify_result() const; long get_openssl_verify_result() const;
@ -409,7 +409,7 @@ private:
bool verify_host(const std::string &host, X509 *server_cert) const; bool verify_host(const std::string &host, X509 *server_cert) const;
std::string ca_cert_path_; std::string ca_cert_path_;
bool skip_server_certificate_verification_ = true; bool server_certificate_verification_ = false;
SSL_CTX *ctx_; SSL_CTX *ctx_;
std::mutex ctx_mutex_; std::mutex ctx_mutex_;
long verify_result_ = 0; long verify_result_ = 0;
@ -2367,8 +2367,8 @@ inline void SSLClient::set_ca_cert_path(const char *ca_cert_path) {
ca_cert_path_ = ca_cert_path; ca_cert_path_ = ca_cert_path;
} }
inline void SSLClient::skip_server_certificate_verification(bool skip) { inline void SSLClient::enable_server_certificate_verification(bool enabled) {
skip_server_certificate_verification_ = skip; server_certificate_verification_ = enabled;
} }
inline long SSLClient::get_openssl_verify_result() const { inline long SSLClient::get_openssl_verify_result() const {
@ -2394,7 +2394,7 @@ inline bool SSLClient::read_and_close_socket(socket_t sock, Request &req,
if (SSL_connect(ssl) != 1) { return false; } if (SSL_connect(ssl) != 1) { return false; }
if (!skip_server_certificate_verification_) { if (server_certificate_verification_) {
verify_result_ = SSL_get_verify_result(ssl); verify_result_ = SSL_get_verify_result(ssl);
if (verify_result_ != X509_V_OK) { return false; } if (verify_result_ != X509_V_OK) { return false; }