2023-02-04

Sean Kim·2023년 2월 5일
0

TIL

목록 보기
14/17

자바 공부하다 신기한것

  • 자바 생성자 (constructor)는 리턴타입을 명시할필요가 없다.
    class MoterBike {
		public MoterBike() {
    	}
	}
  • java나 kotlin에서의 constructor method 나 python의 init method 같은걸로 객체 생성하는것과 다르게 go 에서는 func new() Moterbike {} 보다는 m := MoterBike{} 같은 방식으로 선언하는 경우도 많다. 클래스와 구조체의 인식 차이인듯

go net/http 사설 인증서 만들기

go run $GOROOT/src/crypto/tls/generate_cert.go -host localhost -ecdsa-curve P256 사설 인증서 만들기

  • localhost 라는 호스트 이름으로 key.pem(개인키) cert.pem(인증서)를 만들수 있다. 근데 어차피 사설 인증서라 로컬 테스트 용으로밖에 못쓴다. (certificate pinning 을 통하면 클라이언트와 서버간 실제 통신에도 사용할 수 있다.)
  • certificate pinning 이란 서버와 클라이언트가 서로 사전에 고정된 인증서만으로 통신하는것이다.
  • 클라이언트가 이렇게 사설 인증서를 certPool 에 등록해두고 이 컨피그와 함께 요청하는것
	cert, err := ioutil.ReadFile("cert.pem")
	if err != nil {
		t.Fatal(err)
	}

	certPool := x509.NewCertPool()
	if ok := certPool.AppendCertsFromPEM(cert); !ok {
		t.Fatal("failed to append certificate to pool")
	}

	tlsConfig := &tls.Config{
		RootCAs:          certPool,
		MinVersion:       tls.VersionTLS12,
		CurvePreferences: []tls.CurveID{tls.CurveP256},
	}

	// 클라이언트가 요청을 할때 서버에서 발급된 인증서를 고정해두고 사용했기 떄문이다
	conn, err := tls.Dial("tcp", serverAddress, tlsConfig)
	if err != nil {
		t.Fatal(err)
	}
profile
이것저것 해보고있습니다.

0개의 댓글