vhosts添加https证书两步:

1:生成证书:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

关于参数:

  • openssl: 基本命令行工具,用于创建并管理OpenSSL证书、密钥与其它文件。
  • req: 此子命令指定我们希望使用X.509证书签名请求(简称CSR)管理。其中X.509是一项公钥基础设施标准,SSL与TLS将其指定为密钥与证书管理机制。
  • -x509: 进一步修改前一条子命令,告知工具我们需要的是自签名证书,而非生成普通的证书签名请求。
  • -nodes: 告知OpenSSL跳过利用密码保护证书的选项。我们的Apache需要在服务器启动时能够在不经用户许可的情况下读取该文件,而密码会影响到这一流程。
  • -days 365: 此选项选定证书的有效时限。我们将其设定为一年。
  • -newkey rsa:2048: 指定我们希望同时生成一份新证书与新密钥。我们在上一步设定中无需创建密钥即可签署证书,因此这里需要将密钥与证书一同创建。其中rsa:2048部分指定生成RSA密钥,长度为2048位。
  • -keyout: 此行告知OpenSSL将生成的密钥文件保存在何处。
  • -out: 告知OpenSSL将我们创建的证书保存在何处。

参考:https://blog.csdn.net/zstack_org/article/details/70048745

2:添加带证书的虚拟主机:

sudo lnmp ssl add

响应:

+-------------------------------------------+
| Manager for LNMP, Written by Licess |
+-------------------------------------------+
| https://lnmp.org |
+-------------------------------------------+
Please enter domain(example: www.lnmp.org): localhost
Your domain: localhost
Enter more domain name(example: lnmp.org *.lnmp.org):
Please enter the directory for domain localhost: /home/wwwroot/www
Allow access log? (y/n) y
Enter access log filename(Default:localhost.log):
You access log filename: localhost.log
Please enter Administrator Email Address: ××××@.com
Server Administrator Email:××××@.com
: Use your own SSL Certificate and Key
: Use Let's Encrypt to create SSL Certificate and Key
Enter or :
Please enter full path to SSL Certificate file: /etc/ssl/certs/apache-selfsigned.crt
Please enter full path to SSL Certificate Key file: /etc/ssl/private/apache-selfsigned.key
Please enter full path to SSL Chain file:
SSL Chain file will not set.Test Apache configure file...

访问localhost

重启电脑apache 无法访问,可通过命令进行查看错误。

httpd -k start
AH00112: Warning: DocumentRoot [/home/wwwroot/default] does not exist
AH00526: Syntax error on line of /usr/local/apache/conf/vhost/localhost.conf:
SSLCertificateKeyFile: file '/etc/ssl/private/apache-selfsigned.key' does not exist or is empty

解决:

/home/wwwroot/default 目录不存在,vhost如果没有指定path,在/usr/local/apache/conf/extra/httpd-vhosts.conf 中修改。
/etc/ssl/private/apache-selfsigned.key 不存在,是因为www-data 组没有读取/etc/ssl的全选。

sudo chmod - /etc/ssl/*

生成被浏览器信任的证书

自签证书很简单,但生成的不被浏览器认可,在地址栏显示为 “不安全”。

有一个开源工具,mkcert  ,由google Go 团队开发,生成可被浏览器信任的证书。原理是生成证书的同时生成自己的证书颁发机构CA, 在系统里插入一个自己的 CA root,信任这个 CA root,然后用这个根生成 SAN 证书。

github地址: https://github.com/FiloSottile/mkcert

可通过项目github的Releases打包文件直接运行生成;

./mkcert-v1.3.0-linux-amd64 

是步骤帮助说明:

Using the local CA at "/home/×××/.local/share/mkcert" ✨
Usage of mkcert: $ mkcert -install
Install the local CA in the system trust store. $ mkcert example.org
Generate "example.org.pem" and "example.org-key.pem". $ mkcert example.com myapp.dev localhost 127.0.0.1 ::
Generate "example.com+4.pem" and "example.com+4-key.pem". $ mkcert "*.example.it"
Generate "_wildcard.example.it.pem" and "_wildcard.example.it-key.pem". $ mkcert -uninstall
Uninstall the local CA (but do not delete it). For more options, run "mkcert -help".

执行 ./mkcert-v1.3.0-linux-amd64 --install 就会安装本地的私有CA,并添加系统信任此CA。

执行 ./mkcert-v1.3.0-linux-amd64 localhost 生成 The certificate is at "./localhost.pem" and the key at "./localhost-key.pem" ✅ 将证书添加nginx或apache即可。

参考: https://blog.filippo.io/mkcert-valid-https-certificates-for-localhost/

ubuntu 本地生成被浏览器信任的证书的更多相关文章

  1. 一键自签本地 TLSv3 多域名 SAN 域名证书工具 HTTPS(最新版 Chrome 浏览器策略测试通过)

    一键自动生成本地自签名SAN域名证书工具 原生OpenSSL生成自签名SAN CA域名(V3签名),在Linux.MacOS系统下签发测试通过. 用于一键快速生成开发和测试场景证书,内部平台授权和私有 ...

  2. Chrome:不受信任的证书----openssl签发带Subject Alternative Name的证书

    Chrome下自签名证书提示无效的问题 发现chrome验证证书很严格,必须带有Subject Alternative Name.签发csr时,修改openssl.cnf : vi /etc/ssl/ ...

  3. IIS6的SSL配置,如何配置SSL到登陆页,如何将SSL证书设置成受信任的证书

    一. 申请证书1. 到受信任的机构申请 略 2. 到自建的证书服务器申请 a. 安装证书服务 通过控制面板中的“添加/删除程序”,选择“添加/删除Windows组件”.在Windows组件向导中找到“ ...

  4. https学习笔记三----OpenSSL生成root CA及签发证书

    在https学习笔记二,已经弄清了数字证书的概念,组成和在https连接过程中,客户端是如何验证服务器端的证书的.这一章,主要介绍下如何使用openssl库来创建key file,以及生成root C ...

  5. [svc]cfssl模拟https站点-探究浏览器如何校验证书

    准备cfssl环境 wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl wget https://pkg ...

  6. webpack-dev-server 搭建本地服务以及浏览器实时刷新

    一.概述开发项目中为了保证上线,开发项目是都需要使用localhost进行开发,以前的做法就是本地搭建Apache或者Tomcat服务器.有的前端开发人员 对服务器的搭建和配置并不熟悉,这个时候需要后 ...

  7. dos批量导入不受信任的证书及软件限制策略的应用

    certmgr.exe -add "证书.cer" -s -r localMachine Disallowed 导入授信机构 certmgr -add "证书.cer&q ...

  8. OpenSSL生成root CA及签发证书

    一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套件,用以支持SSL/TLS 协议的实现.官网:https://www.openss ...

  9. iOS开发HTTPS实现之信任SSL证书和自签名证书

    iOS开发HTTPS实现之信任SSL证书和自签名证书 转自:http://www.jianshu.com/p/6b9c8bd5005a/comments/5539345 (收录一下供自己学习用的) 字 ...

随机推荐

  1. FFMPEG 命令行工具-ffprobe

    ffprobe 简介 ffprobe 是一个多媒体流分析工具.它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来. 它可以用来检测多媒体流的容器类型,以及每一个多媒体流的格式和类型.它可以作为 ...

  2. H3C 802.11e 协议

  3. Linux service进程管理

    Linux进程基本介绍: 1)在Linux中,每个执行的程序(代码)都称为一个进程.每一个进程都分配一个ID号. 2)每一个进程,都对应一个父进程,而这个父进程可以复制多个子进程.例如www服务器. ...

  4. mysql设计规范和原则

    DB设计流程: 1,需求分析 2,ER设计 3,物理设计 需求分析的最佳实践是头脑风暴,把需求理解透彻.根据公司的现况和未来的发展,与pm一起来讨论. ER(EntiyRelation)设计阶段要确定 ...

  5. saltstack--状态判断unless与onlyif

    saltstack状态判断unless与onlyif 很多时候我们在编写 state 文件时候需要进行判断,判断该目录或文件是否存在,判断该配置是否已经已添加,然后根据判断结果再决定命令或动作是否执行 ...

  6. PAT甲级1015题解——令人迷茫的翻译

    题目分析: 本题计算过程简单,但翻译令我迷茫:题意读清楚很重要(反正我是懵逼了)对于一个10进制的数,如果它是一个素数,把它转换成d进制,再将这个序列逆序排,这个逆序的d进制数的10进制表示如果也是素 ...

  7. 【还是畅通工程 HDU - 1233】【Kruskal模板题】

    Kruskal算法讲解 该部分内容全部摘录自刘汝佳的<算法竞赛入门经典> Kruskal算法的第一步是给所有边按照从小到大的顺序排列. 这一步可以直接使用库函数 qsort或者sort. ...

  8. Git for Windows安装教程

    1.国内直接从官网(http://git-scm.com/download/win)下载比较困难,速度极慢,需要翻墙. 这里提供一个国内的下载站,方便网友下载(https://npm.taobao.o ...

  9. C++输入输出流 cin/cout 及格式化输出简介

    C++ 可通过流的概念进行程序与外界环境( 用户.文件等 )之间的交互.流是一种将数据自源( source )推送至目的地( destination )的管道.在 C++ 中,与标准输入/输出相关的流 ...

  10. 【Postgres】Windows2012 不能启动

    PG启动错误-不知道什么错误 等待 postgresql-x64- 服务的连接超时( 毫秒). 由于下列错误,postgresql-x64- 服务启动失败: 服务没有及时响应启动或控制请求. 编写ba ...