golang来实现的webserver通常是是这样的

//main.go
package main import (
"fmt"
"io"
"net/http"
) func defaultHandler(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "<h1>Golang HTTP</h1>")
} func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", defaultHandler)
err := http.ListenAndServe(":80", mux)
if err != nil {
fmt.Println(err.Error())
}
}

服务运行后,我们通常通过http://localhost的形式来访问,

而我们要实现的是通过https://localhost的形式来访问.

那么如何用golang来实现HTTPS呢?

//main.go
package main import (
"fmt"
"io"
"net/http"
) func defaultHandler(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "<h1>Golang HTTPS</h1>")
} func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", defaultHandler)
certFile := "/etc/letsencrypt/live/www.taadis.com/cert.pem"
keyFile := "/etc/letsencrypt/live/www.taadis.com/privkey.pem"
err := http.ListenAndServeTLS(":443", certFile, keyFile, mux)
if err != nil {
fmt.Println(err.Error())
}
}

源码比较简单,

主要是把http.ListenAndServe()替换成ListenAndServeTLS(),

其次注意下端口号的区别,

还有就是CA证书的问题,这里我采用了Let's Encrypt

Golang HTTPS的更多相关文章

  1. golang https server分析

    https: HTTPS是http安全版本的实现,在http与tcp之间加了一层ssl/tls安全传输协议 为了防止请求被监听.篡改.冒充,在tls实现过程中引入了数字证书机制,数字证书由第三方权威机 ...

  2. Docker遇见golang https://www.jianshu.com/p/37693eb8f646

    golang logo 在我国古代,传说天庭中有种种天兵天将,有看守四大天门的(docker0网桥),有负责传话的门将(REST API),有负责人间和天界联络的,如财神爷,土地公等(NAT,DNS) ...

  3. Golang版protobuf编译

    官方网址: https://developers.google.com/protocol-buffers/ (需要FQ) 代码仓库: https://github.com/google/protobu ...

  4. RestTemplate发送HTTP、HTTPS请求

    RestTemplate 使用总结   场景: 认证服务器需要有个 http client 把前端发来的请求转发到 backend service, 然后把 backend service 的结果再返 ...

  5. 汇编语言转换成c语言,或者汇编语言转换成golang的汇编,c语言转换成golang的方法

    https://github.com/minio/c2goasm http://microapl.com/asm2c/index.html               收费的 https://gith ...

  6. GOlang eclipse install

    http://golang.org/dl/ 下载golang https://codeload.github.com/GoClipse/goclipse/tar.gz/v0.8.1 解压 安装ecli ...

  7. 创建超小的Golang docker 镜像

    原文: http://colobu.com/2015/10/12/create-minimal-golang-docker-images/ 本文对于创建超小的镜像非常有用 Docker是PaaS供应商 ...

  8. golang 初体验

    1.下载golang https://code.google.com/p/go/downloads/list 在windows下安装,下载windows32版本 2.安装 安装完毕,默认在C:\Go ...

  9. 从别人的代码中学习golang系列--02

    这篇博客还是整理从https://github.com/LyricTian/gin-admin 这个项目中学习的golang相关知识 作者在项目中使用了https://github.com/googl ...

  10. vscode配置golang开发环境手把手描述篇

    1.下载安装Golang https://golang.google.cn/dl/ 一路下一步即可 2.下载安装Vscode https://visualstudio.microsoft.com/zh ...

随机推荐

  1. 【C语言学习】——命令行编译运行 C 语言程序的完整流程

    今天要学习的内容是 命令行编译运行 C 语言程序,进一步理解C语言编译运行的底层实现和编译原理相关知识,下面是命令行编译运行 C 语言程序的完整流程 一.理论讲解 1. 编译原理概述 1.1 编译过程 ...

  2. VuePress 博客之 SEO 优化(四) Open Graph protocol

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...

  3. vue页面表格组件高度控制

    //浏览器窗口内部高度console.log("window.innerHeight",window.innerHeight); console.log("documen ...

  4. java中的集合ArrayList

    创建集合对象有3种形式 1,不需要传递构造参数,直接new就可以,此时底层数组为空数组. 2,构造参数需要传递一个int类型的值, 用于设置底层数组的长度 3,构造参数需要传递一个Collection ...

  5. 国产开源跨平台软件开发框架新选择:SOUI5

    一.SOUI5跨平台解决方案的实现框架介绍 SOUI5 是一款专为跨平台客户端开发设计的国产框架,源代码:Github or Gitee, 其核心优势在于通过自主实现的 Swinx,在 Linux 平 ...

  6. DBeaver连接PostgreSQL后只有默认数据库“postgres”不显示其他数据库的问题解决办法

    我们在使用DBeaver连接PostgreSQL后,发现数据库中只有"postgres"默认数据库,不显示我们自己创建的数据库. 1.问题描述 我们在使用DBeaver连接Post ...

  7. jar脚本练习

    javaServer.sh #!/bin/bash export JAVA_HOME=/u01/java_home/jdk1.8.0_131 export APP_HOME=/u01/app expo ...

  8. 解读 DeepSeek-R1 论文 - 通俗易懂版

    引言:让 AI 学会"思考"的新突破 在近年来的人工智能浪潮中,大型语言模型(LLM)如 ChatGPT 已经能回答各种问题,但它们在复杂推理方面仍有不足.所谓复杂推理,比如解决奥 ...

  9. Luogu P3059 Concurrently Balanced Strings G 题解 [ 紫 ] [ 线性 dp ] [ 哈希 ] [ 括号序列 ]

    模拟赛搬的题,dp 思路很明显,但难点就在于找到要转移的点在哪. 暴力 首先我们可以先考虑 \(k=1\) 的情况,这应该很好想,就是对于每一个右括号,找到其匹配的左括号,然后进行转移即可,这个过程可 ...

  10. 清华博士后的DeepSeek使用手册,104页,真的是太厉害了!(免费领取源文件)

    <DeepSeek从入门到精通2025>是由清华大学元宇宙文化实验室的余梦珑博士后及其团队撰写.文档的核心内容围绕DeepSeek的技术特点.应用场景.使用方法以及如何通过提示语设计提升A ...