


Cara menggunakan MySQL untuk komunikasi yang disulitkan dalam bahasa Go
Apabila isu keselamatan maklumat menjadi semakin ketara, komunikasi yang disulitkan telah menjadi teknologi asas dalam bidang komputer moden. Apabila menggunakan bahasa Go untuk pembangunan web, pangkalan data MySQL ialah penyelesaian penyimpanan data yang biasa digunakan. Untuk memastikan keselamatan data sensitif, kami perlu menggunakan komunikasi yang disulitkan untuk melindungi kerahsiaan dan integriti semasa penghantaran data. Artikel ini akan memperkenalkan cara menggunakan MySQL untuk komunikasi yang disulitkan dalam bahasa Go.
Sulitkan sambungan MySQL menggunakan protokol SSL/TLS
MySQL menyokong penyulitan sambungan menggunakan protokol SSL/TLS. Protokol SSL/TLS ialah protokol penghantaran selamat yang digunakan secara meluas di Internet untuk memastikan data dilindungi semasa penghantaran. Untuk menggunakan SSL/TLS untuk menyulitkan sambungan MySQL, anda perlu mendayakan fungsi SSL/TLS pelayan MySQL dahulu, dan kemudian nyatakan penggunaan protokol SSL/TLS apabila pelanggan menyambung.
Berikut ialah cara untuk mendayakan SSL/TLS pada pelayan MySQL:
- Jana sijil pelayan dan kunci peribadi
Gunakan arahan berikut untuk jana sijil SSL pelayan dan kunci peribadi:
openssl req -x509 -days 3650 -newkey rsa:2048 -nodes -keyout server-key.pem -out server-cert.pem
Perintah ini akan menjana fail kunci peribadi bernama server-key.pem
dan fail sijil bernama server-cert.pem
dalam direktori semasa.
- Salin sijil dan kunci peribadi ke direktori yang ditentukan pada pelayan MySQL
Ubah suai fail konfigurasi my.cnf
pada pelayan MySQL dan nyatakan sijil pelayan dan peribadi fail utama Laluan adalah seperti berikut:
[mysqld] ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem
- Mulakan semula pelayan MySQL
Mulakan semula pelayan MySQL untuk menjadikan sijil SSL/TLS yang dikonfigurasikan dan kunci persendirian berkuat kuasa.
Apabila pelanggan menyambung ke pelayan MySQL, ia perlu menentukan protokol SSL/TLS. Apabila menggunakan klien baris arahan mysql
, anda boleh menggunakan arahan berikut untuk menyambung:
mysql --ssl-mode=REQUIRED --ssl-ca=/path/to/server-cert.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem -h your-mysql-hostname -u username -p
Antaranya, parameter --ssl-mode
menentukan jenis sambungan SSL/TLS dan REQUIRED
menunjukkan bahawa Protokol SSL/TLS mesti digunakan untuk menyambung. Parameter --ssl-ca
menentukan sijil pelayan MySQL, dan parameter --ssl-cert
dan --ssl-key
menentukan sijil pelanggan dan kunci peribadi. Parameter -h
menentukan nama hos pelayan MySQL.
Untuk menggunakan protokol SSL/TLS untuk menyambung ke pelayan MySQL dalam bahasa Go, anda boleh menggunakan pemacu MySQL rasmi github.com/go-sql-driver/mysql
. Apabila menyambung ke pelayan MySQL, anda perlu menentukan sambungan protokol SSL/TLS Kodnya adalah seperti berikut:
db, err := sql.Open("mysql", "user:password@tcp(hostname:port)/dbname?tls=true&tls-ca=path/to/server-cert.pem&tls-cert=path/to/client-cert.pem&tls-key=path/to/client-key.pem")
Antaranya, parameter tls=true
menunjukkan pendayaan penyulitan SSL/TLS dan <🎜. > Parameter menentukan sijil pelayan MySQL Parameter tls-ca
dan tls-cert
menentukan sijil pelanggan dan kunci peribadi. tls-key
pemacu github.com/go-sql-driver/mysql
untuk menyulitkan kata laluan. Apabila menyambung ke pelayan MySQL, kata laluan yang disulitkan akan digunakan untuk menyambung. NewCipher()
import ( "crypto/aes" "crypto/cipher" "database/sql" "fmt" mysql "github.com/go-sql-driver/mysql" "strconv" ) func main() { // MySQL服务器配置 cfg := mysql.NewConfig() cfg.User = "root" cfg.Passwd = "password" // 原始密码 cfg.Addr = "hostname:port" cfg.DBName = "dbname" // 加密密码 key := []byte("0123456789abcdef") // 密钥 plaintext := []byte(cfg.Passwd) // 原始密码 block, _ := aes.NewCipher(key) ciphertext := make([]byte, aes.BlockSize+len(plaintext)) iv := ciphertext[:aes.BlockSize] for i := range iv { iv[i] = byte(i) } cfb := cipher.NewCFBEncrypter(block, iv) cfb.XORKeyStream(ciphertext[aes.BlockSize:], plaintext) cfg.Passwd = fmt.Sprintf("%x", ciphertext) // 加密后的密码 // 连接MySQL服务器 db, err := sql.Open("mysql", cfg.FormatDSN()) if err != nil { fmt.Println(err) return } defer db.Close() // 执行SQL语句 rows, err := db.Query("SELECT * FROM tablename") if err != nil { fmt.Println(err) return } defer rows.Close() // 输出结果 cols, _ := rows.Columns() data := make([][]byte, len(cols)) pointers := make([]interface{}, len(cols)) for i := range data { pointers[i] = &data[i] } for rows.Next() { rows.Scan(pointers...) for i := range data { fmt.Print(string(data[i]), " ") } fmt.Println() } }
untuk mencipta objek konfigurasi pelayan MySQL dan tetapkan pengguna nama, kata laluan, nama hos, nombor Port dan nama pangkalan data. Kemudian gunakan fungsi NewConfig()
untuk mencipta kunci dan penyulitan AES yang disulitkan. Selepas menyulitkan kata laluan asal, gunakan kata laluan yang disulitkan untuk menyambung ke pelayan MySQL. NewCipher()
Atas ialah kandungan terperinci Cara menggunakan MySQL untuk komunikasi yang disulitkan dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Cecair mengendalikan isu keselamatan bersamaan dalam penulisan log pelbagai proses. Proses berganda menulis fail log yang sama pada masa yang sama. Bagaimana untuk memastikan kesesuaian selamat dan cekap? Ini ...

"Debianstrings" bukan istilah standard, dan makna khususnya masih belum jelas. Artikel ini tidak dapat mengulas secara langsung mengenai keserasian penyemak imbasnya. Walau bagaimanapun, jika "debianstrings" merujuk kepada aplikasi web yang dijalankan pada sistem Debian, keserasian penyemak imbasnya bergantung kepada seni bina teknikal aplikasi itu sendiri. Sebilangan besar aplikasi web moden komited untuk keserasian penyemak imbas. Ini bergantung kepada standard web berikut dan menggunakan teknologi front-end yang serasi (seperti HTML, CSS, JavaScript) dan teknologi back-end (seperti PHP, Python, Node.js, dll.). Untuk memastikan bahawa aplikasi itu serasi dengan pelbagai pelayar, pemaju sering perlu menjalankan ujian silang dan menggunakan responsif

Penghapusan automatik Golang Generik Jenis Kekangan Jenis dalam Pengguna VSCode mungkin menghadapi masalah yang aneh ketika menulis kod Golang menggunakan vscode. Bila ...

Dalam sistem Debian, giliran log Go biasanya bergantung pada perpustakaan pihak ketiga, dan bukannya ciri-ciri yang datang dengan perpustakaan standard GO. Lumberjack adalah pilihan yang biasa digunakan. Ia boleh digunakan dengan pelbagai kerangka log (seperti ZAP dan Logrus) untuk merealisasikan putaran automatik dan pemampatan fail log. Berikut adalah konfigurasi sampel menggunakan perpustakaan Lumberjack dan ZAP: Packagemainimport ("gopkg.in/natefinch/lumberjack.v2" "go.uber.org/zap" "go.uber.org/zap/zapcor

Di bawah rangka kerja beegoorm, bagaimana untuk menentukan pangkalan data yang berkaitan dengan model? Banyak projek beego memerlukan pelbagai pangkalan data untuk dikendalikan secara serentak. Semasa menggunakan beego ...

Artikel ini membincangkan cara mengoptimumkan prestasi laman web mengenai sistem Debian. "Debianstrings" bukan istilah standard dan boleh merujuk kepada alat atau teknologi yang digunakan dalam sistem Debian untuk meningkatkan prestasi laman web. Berikut adalah beberapa petua praktikal: 1. Adalah disyorkan untuk menggunakan panel pagoda untuk memudahkan proses pemasangan dan konfigurasi untuk konfigurasi pelayan web dan php persekitaran. Adalah disyorkan untuk memasang nginx1.22.1 sebagai pelayan web, Php8.2 sebagai penterjemah skrip, dan MySQL10.7.3-Mariadb sebagai sistem pangkalan data. Pastikan untuk membolehkan sambungan PHP yang diperlukan, seperti FileInfo, Opcache, Memcached, Red
