Microsoft MVP성태의 닷넷 이야기
SSL 통신 문의 [링크 복사], [링크+제목 복사],
조회: 5918
글쓴 사람
민우
홈페이지
첨부 파일
 

안녕하세요

개인서버에 우분투20.04, Nginx, MariaDB, Net6(VS2022) 를 설치하였고 REST API 서버구축이 목표입니다
닷넷 프로그램에서 MariaDB 접속하면 데이터 잘 가져옵니다

그런데 보안 때문에 MariaDB 에서 yaSSL을 설정을 했는데요
WireShark 로 암호화패킷 확인했고 HeidiSQL 에서도 ssl 모드(인증서없이)로 접속하면 잘 작동합니다

그런데 제가 만드는 닷넷 프로그램에서는 DB 접속하면 ssl 때문에 예외가 발생하는데요 SSL 을 끄고 하면 잘됩니다.
검색해보면 ssl 을 끄고 하라는 내용들이 많은데
보안 때문에 ssl 은 반드시 사용해야하는 상황입니다


여기서 궁금한건 HeidiSQL로 ssl 접속 하거나 웹브라우저 https 연결시 사용자가 SSL 인증서를 따로 발급하는 과정이 없는데
이런 프로그램들은 자체적으로 인증서를 내장하고 있기 때문인가요?

제가 만드는 닷넷프로그램에서는 별도로 인증서를 발급해줘야하는건지
아니면 ssl 연결시 자동으로 서버에서 인증서를 수신하도록 추가 코드가 필요한건지
수만은 사용자가 사용하는 클라이언트 프로그램의 경우 인증서는 어떻게 발급되는건지

SSL 통신의 연결과 인증서를 어떻게 해야하는건지 궁금합니다








[최초 등록일: ]
[최종 수정일: 2/22/2022]


비밀번호

댓글 작성자
 



2022-02-22 03시06분
개인 서버에 만들었다는 걸로 봐서는 아마도 인증서도 정식 서명하지 않은 테스트 인증서를 사용했을 것으로 보이는데요, 이런 경우 SSL Negotiation 과정 중 정식 인증서가 아니어서 연결에 실패할 수 있습니다. 닷넷의 경우 대체로 이 과정이 엄격한데요, 다음의 글을 보시면,

SSL Socket 예제 - C/C++ 서버, C# 클라이언트
; https://www.sysnet.pe.kr/2/0/11410

SSL Socket 수준에서 validateCertificate 콜백을 넘겨 인증서의 유효성 검사를 무조건 허락하도록 return true를 하는 코드를 볼 수 있습니다. 지금 닷넷에서 사용 중인 MariaDB 클라이언트 라이브러리에도 그런 식의 인증서 유효성 검사를 무시할 수 있는 수단이 있을 것입니다.

혹은, 다음의 글에 보면,

C# - SmtpClient로 SMTP + SSL/TLS 서버를 이용하는 방법
; https://www.sysnet.pe.kr/2/0/11537

전역적으로 설정하는 "System.Net.ServicePointManager.ServerCertificateValidationCallback" 콜백이 있습니다. 여기서도 return true를 하면... 아마도 잘 동작할 것입니다.
정성태
2022-02-22 03시17분
[민우] 네
현재는 집에 개인서버로 연습중이고 SSL을 적용한 REST API 서버구축 방법을 익히면 업무에 적용해보려고 합니다
알려주신 자료들 잘 참고하겠습니다!
빠른 답변 감사합니다 ^^
[guest]
2022-02-22 03시23분
아래의 코드를 보니까,

https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl#net-mysqlconnector

MySqlConnector의 경우 callback을 통한 무시는 제공하지 않고 SslMode = MySqlSslMode.VerifyCA와 함께 테스트 인증서 측의 CA에 대한 공개키 파일을 등록하고 있습니다.

해보진 않았지만, 아래의 글을 보면 제가 답변한 것과 같은 식의 콜백도 있는 것 같습니다.

MySqlConnection.RemoteCertificateValidationCallback property
; https://mysqlconnector.net/api/mysqlconnector/mysqlconnection/remotecertificatevalidationcallback/

"
SslMode must be set to Preferred or Required in order for this delegate to be invoked. See the documentation for RemoteCertificateValidationCallback for more information on the values passed to this delegate.
"
정성태
2022-02-22 03시34분
[민우] 네 SSL 인증은 처음이라 복잡해보이는데 보안을 위해 이번에 확실히 잘 알아둬야할것같습니다
추가 댓글도 감사합니다 ^^
[guest]
2022-03-01 08시31분
[민우] 말씀대로 MySqlConnector 패키지를 Nuget 으로 설치해보니 아래 코드로 간단하게 작동하네요
혹시 MySql.Data 패키지가 이미 설치되어있다면 이것을 먼저 제거하고 MySqlConnector 패키지를 설치해야한다네요.

데이터 잘 가져오고 와이어샤크로 암호화 데이터 패킷도 확인했습니다.

// MariaDB SSL 접속
var builder = new MySqlConnectionStringBuilder
{
    Server = "123.123.123.123",
    UserID = "user01",
    Password = "12345678",
    Database = "test_db",
    SslMode = MySqlSslMode.Preferred // Preferred 또는 Required 두가지만 가능
};

using (MySqlConnection conn = new MySqlConnection(builder.ConnectionString))
{
    conn.Open();
    string QUERY = "SELECT * FROM DEPT; SELECT * FROM EMP;";
    var da = new MySqlDataAdapter(QUERY, conn);
    DataSet ds = new DataSet();
    da.Fill(ds);
}

SslMode 값은 Preferred, Required 두개만 사용이 가능하고 나머지 다른 값들은 예외 발생합니다
그리고 RemoteCertificateValidationCallback 콜백은 여러가지로 시도해봤지만 전혀 호출이 되지 않네요..
어쨌든 콜백과 무관하게 MySqlConnector 패키지로 MariaDB SSL 접속은 간단히 해결되었습니다.

일단 제가 시도해본 결과를 그대로 적어봅니다
감사합니다~~
[guest]
2022-03-01 09시36분
후기 감사합니다. ^^ 이런 피드백 너무 좋습니다.
정성태

... 16  17  18  19  20  21  22  23  [24]  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5319권대현4/10/20206256C++(UWP)Dll에서 C#(UWP)Dll 호출이 가능한가요? [1]
5318이승준4/9/20207125동영상 관련 업계 근황? 입니다. [1]
5317kskk...4/7/20209139OpenCV 이용 해상도 설정 질문 입니다.. [3]
5316윤현수4/7/20206363pipe 비동기방식 질문 [1]파일 다운로드1
53154/6/20207044dll파일 로드 원리? 부분에서 도움받고싶습니다. [3]
5314강성욱3/31/20208918메서드 내에서 await 2번 등장할 때의 이해 [11]파일 다운로드1
5313강성욱3/27/20206718await 2번 [1]
53121a2a...3/20/20206499Re raw data write 질문 관련 [1]파일 다운로드1
53111a2a...3/20/20207280Raw data write 관련 질문 [1]파일 다운로드1
5310아스파넬3/15/202073171초에 5회 함수호출 제한 관련 질문입니다. [1]
5309하태3/11/20209207안녕하십니까. c# Winform UI 질문드리겠습니다! [3]파일 다운로드1
5308질문3/9/20207997Window XP SP3 32bit 환경(Window Update 모두 완료)에서 .Net Framework 4.0.3 으로 빌드된 .dll 파일 gacutil.exe 등록 관련 문의 [5]
5306개발자3/9/20206868C#을 통해 인터넷 접속 가능한 이더넷을 선택할 수 있는지요? [1]
5305JaeS...3/9/20206547RAW파일 생성 질문드립니다 [8]파일 다운로드1
5303궁금하당2/27/20208863C#에서 C++ DLL읽기 (아래 글쓴이) [1]
5302궁금하당2/27/202010946C#에서 C++ DLL호출 ('PInvokeStackImbalance') [4]파일 다운로드1
5301질문합니...2/27/20206415소켓 대량 데이터 디자인 문의 [1]
5300nals...2/27/20207053vs2013에서 BinaryFormatter Serialize 후 vs2015에서 Deserialize시 예외 발생 [3]파일 다운로드1
5298질문2/26/20208425.lic 파일에 대해 질문 있습니다. [9]
5297임한승2/26/20205999vs2013에서 BinaryFormatter Serialize 후 vs2015에서 Deserialize시 예외 발생 건 [1]파일 다운로드1
5295나그네2/25/20207394클라이언트 PC 정보 조회관련.. [2]
5294닷넷초보ㅠ2/25/20207392윈폼으로 socket통신프로그램 만든후 release로 디버깅한 실행파일을 다른컴퓨터에서 실행할때 반응이없어요 [1]
5293탱코2/21/20207294검색을 하고 싶은데 어떻게 검색을 해야 할 지 모르겠습니다. [1]
5292아부리2/19/20207186XingApiNet 관련 질문 [3]
5291지현명2/15/20207934JsonConvert.Serialize 하고 Deserialize 할때 간헐적으로 한글 깨짐 현상 문의 합니다. [3]
5290베도빈2/15/20207287직접 제작한 사용자 정의 콘트롤 DLL, 실행파일에 포함시켜 배포할 수 있을까요? [1]
... 16  17  18  19  20  21  22  23  [24]  25  26  27  28  29  30  ...