SSL Sertifikası

Go ile SSL API İstemcisi

Go net/http ile zaman aşımlı SSL API istemcisi yazın: örnek kod, Body kapatma, InsecureSkipVerify'dan kaçınma ve bitiş tarihi izleme fikri.

Go'nun standart kütüphanesi net/http ile sertifika API'sine istemci yazmak için yeterlidir. Zaman aşımlı bir http.Client ve küçük bir yardımcı fonksiyon çoğu ihtiyacı karşılar.

Örnek istemci

package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
	"time"
)

type Siparis struct {
	ID     string `json:"id"`
	Domain string `json:"domain"`
	Durum  string `json:"status"`
}

var client = &http.Client{Timeout: 30 * time.Second}

func siparisler() ([]Siparis, error) {
	req, err := http.NewRequest("GET", "https://api.ornek-ca.example/v1/orders", nil)
	if err != nil {
		return nil, err
	}
	req.Header.Set("Authorization", "Bearer "+os.Getenv("SSL_API_TOKEN"))
	resp, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	if resp.StatusCode >= 400 {
		b, _ := io.ReadAll(io.LimitReader(resp.Body, 1024))
		return nil, fmt.Errorf("api hatasi %d: %s", resp.StatusCode, b)
	}
	var out struct{ Data []Siparis `json:"data"` }
	if err := json.NewDecoder(resp.Body).Decode(&out); err != nil {
		return nil, err
	}
	return out.Data, nil
}

Adres ve alanlar kurgusaldır; sağlayıcının yanıt şemasına göre uyarlayın.

Go'ya özgü ipuçları

  • http.DefaultClient zaman aşımsızdır; her zaman kendi istemcinizi tanımlayın.
  • resp.Body'yi kapatmayı unutmayın, aksi halde bağlantılar sızar.
  • tls.Config{InsecureSkipVerify: true} kullanmayın; özel bir iç CA için RootCAs havuzuna ekleme yapın.
  • İstekleri context.Context ile iptal edilebilir yapın.

Sertifika bitiş kontrolü

Go ile tls.Dial yapıp ConnectionState().PeerCertificates[0].NotAfter değerini okuyarak kendi izleme aracınızı kolayca yazabilirsiniz; tek ikili dosya olarak sunuculara dağıtmak pratiktir.

Elle doğrulama için SSL denetleyici, sertifika seçimi için SSL seçim rehberi yardımcı olur.

Yapılandırma ve dağıtım

Go ikilisini statik derleyip sunucuya kopyalamak, bağımlılık sorunlarını ortadan kaldırır. Zamanlanmış görev olarak çalıştırırken çıkış kodunu anlamlı tutun; hata durumunda sıfırdan farklı değer döndürün ki izleme sistemi sorunu yakalasın.

Bu makale faydalı oldu mu?

Makale Ara

Yardıma mı İhtiyacınız Var?

Aradığınızı bulamadıysanız destek ekibimiz size yardımcı olabilir.

Destek Talebi Aç