---
name: "SSL_CTX_set_ssl_version"
section: "3ssl"
platform: "linux"
package: "openssl"
version: "3.6.5-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SSL_CTX_set_ssl_version"
---

# SSL\_CTX\_set\_ssl\_version(3ssl)

choose a new TLS/SSL method

## NAME

SSL\_CTX\_set\_ssl\_version, SSL\_CTX\_get\_ssl\_method, SSL\_set\_ssl\_method, SSL\_get\_ssl\_method - choose a new TLS/SSL method

## SYNOPSIS

```
 #include <openssl/ssl.h>
 int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *method);
 const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx);
 int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
 const SSL_METHOD *SSL_get_ssl_method(const SSL *ssl);
```

## DESCRIPTION

**SSL\_CTX\_set\_ssl\_version()** sets a new default TLS/SSL **method** for SSL objects newly created from this **ctx**.  Most of the configuration attached to the SSL\_CTX object is retained, with the exception of the configured TLS ciphers, which are reset to the default values.  SSL objects already created from this SSL\_CTX with **SSL\_new**(3) are not affected, except when **SSL\_clear**(3) is being called, as described below.

**SSL\_CTX\_get\_ssl\_method()** returns the SSL\_METHOD which was used to construct the SSL\_CTX.

**SSL\_set\_ssl\_method()** sets a new TLS/SSL **method** for a particular **ssl** object. It may be reset, when **SSL\_clear()** is called.

**SSL\_get\_ssl\_method()** returns a pointer to the TLS/SSL method set in **ssl**.

## NOTES

The available **method** choices are described in **SSL\_CTX\_new**(3).

When **SSL\_clear**(3) is called and no session is connected to an SSL object, the method of the SSL object is reset to the method currently set in the corresponding SSL\_CTX object.

**SSL\_CTX\_set\_version()** has unusual semantics and no clear use case; it would usually be preferable to create a new SSL\_CTX object than to try to reuse an existing one in this fashion.  Its usage is considered deprecated.

**SSL\_set\_ssl\_method()** cannot be used to change a non-QUIC SSL object to a QUIC SSL object or vice versa, or change a QUIC SSL object from one QUIC method to another.

## RETURN VALUES

The following return values can occur for **SSL\_CTX\_set\_ssl\_version()** and **SSL\_set\_ssl\_method()**:

- 0

  The new choice failed, check the error stack to find out the reason.

- 1

  The operation succeeded.

**SSL\_CTX\_get\_ssl\_method()** and **SSL\_get\_ssl\_method()** always return non-NULL pointers.

## SEE ALSO

**SSL\_CTX\_new**(3), **SSL\_new**(3), **SSL\_clear**(3), [**ssl**(7)](/ssl/7.md), **SSL\_set\_connect\_state**(3)

## HISTORY

**SSL\_CTX\_set\_ssl\_version()** was deprecated in OpenSSL 3.0.

## COPYRIGHT

Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License").  You may not use this file except in compliance with the License.  You can obtain a copy in the file LICENSE in the source distribution or at \<https://www.openssl.org/source/license.html\>.
