prisma / tiberius

TDS 7.2+ (Microsoft SQL Server) driver for Rust
Apache License 2.0
311 stars 113 forks source link

invalid peer certificate: UnsupportedCertVersion #327

Open ryanhossain9797 opened 6 months ago

ryanhossain9797 commented 6 months ago

I'm getting this error running the example code

Error: An error occured during the attempt of performing I/O: invalid peer certificate contents: invalid peer certificate: UnsupportedCertVersion

Cargo.toml

tiberius = { version = "0.12.2", default-features = false, features = [ "rustls" ] }
once_cell = { version = "1.19" }
anyhow = { version = "1.0" }
tokio-util = { version = "0.7", features = [ "compat" ] }
tokio = { version = "1.35", features = ["full"] }

Code

use once_cell::sync::Lazy;
use std::env;
use tiberius::{Client, Config};
use tokio::net::TcpStream;
use tokio_util::compat::TokioAsyncWriteCompatExt;

static CONN_STR: Lazy<String> = Lazy::new(|| {
    env::var("TIBERIUS_TEST_CONNECTION_STRING").unwrap_or_else(|_| {
        "Server=localhost;Database=
<my_db>;User ID=<my_user_id>;Password=<my_known_password>;Trusted_Connection=False;Encrypt=False;MultipleActiveResultSets=True;".to_owned()
    })
});

#[cfg(not(all(windows, feature = "sql-browser-tokio")))]
#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let config = Config::from_ado_string(&CONN_STR)?;

    let tcp = TcpStream::connect(config.get_addr()).await?;
    tcp.set_nodelay(true)?;

    let mut client = Client::connect(config, tcp.compat_write()).await?;

    let stream = client.query("SELECT TOP 10 * FROM [Accounting].[Account]", &[&1i32]).await?;
    let row = stream.into_row().await?.unwrap();

    println!("{:?}", row);
    assert_eq!(Some(1), row.get(0));

    Ok(())
}

Note that the connection string works locally from ssms or azure data studio