bitwarden本地搭建(无需购买SSL证书)
bitwarden本地搭建(无需购买SSL证书)
在安装之前,笔者在这里先声明一下,我安装bitwarden使用的操作环境为ArchLinux,我的想法是,因为这只是一个“密码本”,并且最好能保证其能够在开机后占用尽量少的内存让密码本保持稳定运行。在此前提下,我选择了干净整洁的ArchLinux,关于其安装,大家可以看一下网上现有的教程,或者也可以看一下我的另一篇文章,https://www.cnblogs.com/Thato/articles/18309473
Arch的安装不能说简单,但是也绝对说不上很难。关于完全安装完毕后的占用,我压到了350MB的运行内存占用,如下图,可以说是占用十分的少了

如果你不喜欢用或者不用Arch,也没有关系,本篇文章主要的分享目的是自签SSL证书使用https服务的流程,因为bitwarden强制要求运行在此环境下以保证密码安全,而自签既能剩下一笔资金,也能保证我们能够使用安全的bitwarden服务
那么接下来,是我们安装bitwarden要用到的软件
- VMware虚拟机
- Arch Linux操作系统
- docker
- docker compose
- Nginx => 用于反向代理和加载ssl证书
- 一个能用的代理 => 主要是拉docker镜像用,如果你有好的镜像源,其实这个就无所谓
- 一个清醒的大脑
- 一杯茶或者咖啡
docker与docker-compose的安装
安装docker
docker的安装我们可以直接使用
pacman -S docker
来安装,如下:

此时按下回车确认安装即可;当安装完毕后,我们可以再使用命令开启docker的守护进程并且设置开机自启
systemctl enable --now docker

当出现如上提示时,docker就启动完毕且添加开机自启了;检查一下docker服务是否正常,运行命令
docker version

当docker如上显示出Client和Server的信息后,说明docker安装设置完毕。
安装docker-compose
对于Arch来说,docker-compose可以直接使用pacman来安装,运行命令
pacman -S docker-compose

安装完成后执行命令
docker-compose version

当能够成功返回版本信息时,说明docker-compose也安装完毕了
bitwarden的安装
我这里使用了一个第三方的bitwarden的docker镜像,听别人说有解锁一些专业版的东西,这里就拿来用了。
加速docker下载
由于各种各样的原因,我们直接使用官方拉取镜像的时候多半情况不是很慢就是连接不上,为了解决这个问题,我这里给出一个可行的解决方案:调用物理机的代理程序

草图大致如上,我的天,好丑,哈哈哈哈。将就看一下,大致就是这个意思。
那么我们如何实现呢?
首先找到代理程序上关于“允许局域网连接”的选项,这里给出小猫和小V的示意图,大家可以任选一个软件去用,当然,有自己的用自己的也行,只要允许局域网连接即可。


随后记住端口号,这里我就用小猫了,记住端口号7890
之后打开VM,和控制面板,结合看一下NAT模式的网卡地址

可以看到我这里是192.168.131.1,那么结合刚才的端口号和网卡的地址。我们要访问的代理地址就是192.168.131.1:7890;访问192.168.131.1:7890即可映射到物理机的7890端口使用代理,这里各位根据自己的实际情况去更改即可。
拿到代理地址之后,配置docker,使其走代理,依次运行命令
mkdir -p /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/http-proxy.conf
vim /etc/systemd/system/docker.service.d/http-proxy.conf
在vim编辑的文件中添加如下条目
[Service]
Environment="HTTP_PROXY=http://192.168.131.1:7890/"
Environment="HTTPS_PROXY=http:// 192.168.131.1:7890/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

保存后重启docker
systemctl daemon-reload
systemctl restart docker

此时docker加速就配置完成了,接下来我们来拉取镜像
拉取镜像&创建实例
运行命令
docker pull bitwardenrs/server:latest
拉取大佬用rust写好的bitwarden docker镜像

可以看到主机侧代理成功获取到了请求,并且docker已经开始使用主机侧代理拉取镜像了,此时我们等待镜像拉取完毕即可,镜像拉取过程的速度因网络状态而异。

当出现如上提示信息时,说明成功拉取完毕了镜像。随后我们来起一下容器,运行命令
docker run -d --name bitwarden -v /bw-data/:/data/ -p 8080:80 -e WEBSOCKET_ENABLED=true -p 3012:3012 -e DOMAIN=https://passwordserver.com bitwardenrs/server:latest

当出现如上提示时,我们的容器就启动完成了,使用命令
docker ps -a
看一下创建好的容器

如上,如果STATUS栏中如果显示Up xxxx seconds (health: starting)或者是Up xxx miniuts (health: starting)之类的时间信息,就没有问题。
//我之前使用CentOS 7安装,容器一启动STATUS状态就会秒Exit,有解决的同志们可以踹我一脚,我学习一下,感谢。
简单检查(此时bitwarden服务不可用,只是检查是否能够正常访问)
注意:此时bitwarden服务并不可用,只是检查是否能够正常访问
随后我们去访问一下web页面,看看是否有异常;访问之前需要知道我们的虚拟机ip地址。这里可以安装一个net-tools,运行命令
pacman -S net-tools #当然,你也可以使用ip a命令来查看ip地址

安装完成之后就可以使用ifconfig了,我们使用ifconfig来看一下ip地址

可以看到我的ip地址是192.168.131.151,并且启容器的时候我们是把docker的80端口映射到了Arch的8080端口上,所以这里我们要访问的地址就是
尝试访问

可以发现我们的bitwarden服务已经搭出来了
但是,请注意!正如我本小节开头所说,此时服务并不可用,因为bitwarden要求强制使用https才能够进行操作,如下

很多同志可能就是卡在这一步了,上网搜索SSL证书的获取,大都是关于“先注册域名然后就可以免费申请一个SSL证书”之类的回答;但是注册域名也不是免费的,为了解决这个问题,我们可以自签一个SSL证书出来,随后就可以使用bitwarden的服务了。
关于自签SSL证书,你必须要知道的几点:
1. 完全免费,证书时长完全自定义
2. 完全能够保证bitwarden可用,即自签证书能够运行https服务
3. 自签证书不属于“受信证书”,如果你是公网服务,请老老实实注册域名使用受信证书
4. 浏览器会报一个警告,由于不是受信证书,但是我们服务可用就行了,这个不用管;所谓的“不安全”并不是你的密码不安全,web信息传输过程中是会加密的,如下图,我使用自己已经搭建好的另一台bitwarden密码服务器做示例

可以看到数据都是经过TLS加密的,而浏览器提示不安全仅仅是因为你的证书是自签而不是经过权威机构认证的证书,关于安全性这点,请放心。
生成自签证书
这里我们需要两个软件,一个是openssl,一个是jdk11,使用如下命令安装
pacman -S openssl

这里你可以休息一下,喝杯茶或者咖啡,起身运动一下,眺望一下远处,等到下载完毕后再继续安装操作
*
*
*
*
*
*
*
*
*
*
*
休息和安装完毕了吗?我们继续
安装完毕后,我们来继续操作(自签证书的生成参考了文章:https://cloud.tencent.com/developer/article/1558378)
首先来生成一个RSA私钥文件,使用命令:
openssl genrsa -des3 -out server.pass.key 2048
运行之后会要求输入一个密码,这里输入一下,会有一次密码输入和一次密码验证。
此密码后续操作中会多次用到,请记好,如果不慎遗忘,请从这步开始重新生成私钥

私钥生成完毕后,我们需要将其中的密码信息去除,让文件中不包含明文密码,执行命令
openssl rsa -in server.pass.key -out server.key

此过程中会让我们输入一次密码,就是刚才的密码,生成的无密码私钥为server.key
无密码私钥创建完毕之后,我们来生成一个CSR(证书签名请求),执行如下命令
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Hello/L=Guys/O=Like/OU=AndSubscribe/CN=Me.Thank.you.com"
其中,/C=xxx表示的是国家,这里/C=CN即国家是CN;/ST表示省份;/L表示城市;/O表示组织或企业;/OU表示部门;/CN表示域名或IP。这些内容可以完全自定义,些什么都可以,注意不要使用特殊字符

可以看到生成了server.csr,随后我们继续操作,开始自签名操作,运行命令
openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt
其中比较重要的参数是days,这个是证书的有效时间,这里我们既然是自签证书,可以狠心一点,直接签个100年的出来。

可以看到成功输出了crt,自签完成。随后我们把这个证书放到ssl目录中,依次运行如下命令
mkdir -p /usr/local/ssl
cp server.key /usr/local/ssl/
cp server.crt /usr/local/ssl/

移动完成之后我们来继续操作,配置Nginx
使用Nginx反向代理配置https
现在我们有了证书了,该如何使用呢?难不成进到容器里面替换吗
其实完全不用,我们只要配置Nginx设置反向代理即可
首先来安装Nginx,使用命令
pacman -S nginx

安装完毕后运行如下命令
systemctl enable --now nginx

此处我们Nginx就配置完成了,随后我们来设置反向代理
修改配置文件/etc/nginx/nginx.conf,运行命令
vim /etc/nginx/nginx.conf
在其中修改如下内容(注意,一定要在规定的地方去改)
在http中添加:
types_hash_max_size 4096;
将sever中的内容修改为(Server中error_page上面相关的参数项全部移除即可):
listen 80;
server_name passwordsever.com;
# Allow large attachments
client_max_body_size 128M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
}
location /notifications/hub {
proxy_pass http://localhost:3012;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://localhost:8080;
}
listen 443 ssl;
ssl_certificate /usr/local/ssl/server.crt;
ssl_certificate_key /usr/local/ssl/server.key;


配置完成之后保存文件,随后依次运行下面的命令
nginx -t
nginx -c /etc/nginx/nginx.conf
nginx -s reload

此时就配置完成了
正式访问bitwarden
我们来试试访问我们的bitwarden,此时我们已经配置好了https,此时访问https://xxx.xxx.xxx.xxx(你的服务器ip地址)即可

浏览器爆如上错误直接继续访问,此处的“不安全”原因上面已经强调过,不再赘述

可以看到此时成功进入网页了,那么我们开始使用吧。
创建一个新账户,点击创建账号

这里根据提示填写即可,主密码就是登录进bitwarden的密码,请一定牢记账号和密码

注册完毕即可登录

此时,你的bitwarden就搭建完毕了,关于bitwarden的使用,大家可以自行探索。
恭喜你走到了这一步!
bitwarden本地搭建(无需购买SSL证书)的更多相关文章
- 购买SSL证书到部署网站遇到的若干问题
作为一个菜鸟,对于SSL证书,我了解不多,只知道用了它网站更安全,所以这次使用SSL证书途中遇到了各方面的各种问题,到今天为止终于全部解决. 一.证书格式 前两天在那什么云上面买了个SSL证书,是Wo ...
- 阿里云免费购买SSL证书,nginx无缝升级https
最近在升级交流学习社区,觉得有必要升级成https.以下是自己在升级中记录. 以下包括以下部分: 一.阿里云免费购买SSL证书 1.自己在阿里云申请了免费的,然后自己支付0元,购买了SSL证书 2.我 ...
- 在阿里云购买SSL证书,让网站支持HTTPS
SSL简介 引自:https://baike.baidu.com/item/ssl/320778?fr=aladdin SSL SSL(Secure Sockets Layer 安全套接层),及其继任 ...
- centos搭建免费的ssl证书,大部分浏览器均支持!(let’s encrypt 的使用记录)
安装certbot wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 然后就是通过这个脚本获取证书,安装前先将NGINX 停一下. ...
- 八大免费SSL证书-给你的网站免费添加Https安全加密
评论» https://www.freehao123.com/top-8-free-ssl-cert/ 文章目录 Let's Encrypt StartSSL SSL CloudFlare SSL ...
- 十大免费SSL证书:网站免费添加HTTPS加密
SSL证书,用于加密HTTP协议,也就是HTTPS.随着淘宝.百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL证书 ...
- linux nginx 配置ssl证书访问
http://www.linuxidc.com/Linux/2013-08/88271.htm 一.什么是 SSL 证书,什么是 HTTPSSSL 证书是一种数字证书,它使用 Secure Socke ...
- Aliyun SSL 证书签发&安装
目录 HTTPS SSL证书 签发 和 应用 证书购买 证书申请 证书安装 参考文档 HTTPS SSL证书 签发 和 应用 - SSL证书服务(Alibaba Cloud SSL Certifica ...
- nginx 使用ssl证书配置https协议
如果能给你带来帮助,不胜荣幸,如果有错误也请批评指正,共同学习,共同进步. 第一,需要去申请或者购买ssl证书(这步略过,因为开发过程中没有给我提供证书和域名,只有ip地址),我从网上找了一份如何申请 ...
- Nginx配置SSL证书部署HTTPS网站
1.购买ssl证书 购买网站:沃通 2.上传证书到nginx服务器,然后进行解压. 解压后的的效果: [root@bubidev-ng3 nginx]# pwd/etc/nginx [root@bub ...
随机推荐
- MYSQL造数据占用临时表空间
在MySQL中,临时表空间通常用于存储如ORDER BY.GROUP BY.DISTINCT.UNION.JOIN等操作中产生的临时数据.当这些操作的数据集太大而无法在内存中完成时,MySQL会使用磁 ...
- 将外部jar打入本地maven仓库
1.将jar包放入某不含中文的路径下 ,例如:E:\file\zip4j-1.3.2.jar 2.在命令行输入操作命令 mvn install:install-file -DgroupId=zip4j ...
- skipped: maximum number of running instances reached (1)
apscheduler定时任务报错skipped: maximum number of running instances reached (1) 原因是默认max_instances最大定时任务是1 ...
- HTML——超链接标签
一.超链接标签的基本使用 超链接是浏览者和服务器的交互的主要手段,也叫超级链接或a链接,是网页中指向一个目标的连接关系,这个目标可以是网页.网页中的具体位置.图片.邮件地址.文件.应用程序等. 超链接 ...
- 2024盘古石取证比赛(APK)
题目列表 使用软件: Notepad++,火眼证据分析软件,雷电分析app,DB browser for SQLCipher 1. 分析伏季雅的手机检材,手机中诈骗APP的包名是:[答案格式:abc. ...
- 基于docker一键化部署LNMP环境
cd / && wget https://files.cnblogs.com/files/superlinux/install_lnmp.sh && bash inst ...
- redis 基础管理
配置文件 优化redis配置文件定制 cat /nosql/redis/6379/redis.conf daemonize yes port 6379 logfile /nosql/redis/637 ...
- zabbix笔记_006 zabbix web监控
web监控 web监控是对http网站服务进行监控,模拟用户访问网站,对特定的结果进行告警,通知管理员网站状态. web监控是运维必备知识点,通过实验能够熟悉配置和了解zabbix是如何监控web站点 ...
- codemirror-editor-vue3 输入框信息太多 输入框宽度溢出隐藏
我们把div注释看下之前溢出的效果 因为有form表单在里面任何标签上面设置都是不行 因为有校验要显示校验的信息overflow是不起作用的 要是单独的codemirror-editor-vue3 编 ...
- 每天打卡一小时 第三十一天 PTA520钻石 争霸赛
第一题 源代码 #include<iostream> using namespace std; int main() { int n; cin>>n; cout<< ...