<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>bitwarden_rs &#8211; 科技改变生活-雨落星辰</title>
	<atom:link href="https://p1e.cn/html/tag/bitwarden_rs/feed" rel="self" type="application/rss+xml" />
	<link>https://p1e.cn</link>
	<description>所有的伟大,都源于一个勇敢的开始</description>
	<lastBuildDate>Sat, 21 Mar 2020 05:15:21 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>
	<item>
		<title>CentOS 7安装bitwarden_rs自建密码管理</title>
		<link>https://p1e.cn/html/1730.html</link>
					<comments>https://p1e.cn/html/1730.html#respond</comments>
		
		<dc:creator><![CDATA[Naoki]]></dc:creator>
		<pubDate>Thu, 02 Jan 2020 05:52:15 +0000</pubDate>
				<category><![CDATA[运维笔记]]></category>
		<category><![CDATA[bitwarden_rs]]></category>
		<guid isPermaLink="false">https://www.815494.com/?p=1730</guid>

					<description><![CDATA[Bitwarden是一款开源密码管理软件，和Keepass、LastPass相似，支持全平台客户端，支持自建服务，这篇文章要分享的是CenOS 7搭建bitwarden_rs，而不是Bitwarden，关于两者区别，后面会提到。推荐有一定Linux基础的用户继续往下阅读。 前言 早就听闻Bitwarden这款开源密码管理软件，网上口碑也不错，不过一直没有尝试。最近LastPass经常连不上服务器，极其不稳定，而且取消了中文版支持，终于下定决心自建Bitwarden Bitwarden和bitwarden_rs bi]]></description>
										<content:encoded><![CDATA[<p>Bitwarden是一款开源密码管理软件，和Keepass、LastPass相似，支持全平台客户端，支持自建服务，这篇文章要分享的是CenOS 7搭建bitwarden_rs，而不是Bitwarden，关于两者区别，后面会提到。推荐有一定Linux基础的用户继续往下阅读。</p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-1731" src="https://p1e.cn/wp-json/cs/v1/1731" width="731" height="471" /></p>
<h3>前言</h3>
<p>早就听闻Bitwarden这款开源密码管理软件，网上口碑也不错，不过一直没有尝试。最近LastPass经常连不上服务器，极其不稳定，而且取消了中文版支持，终于下定决心自建Bitwarden</p>
<h3>Bitwarden和bitwarden_rs</h3>
<p>bitwarden_rs项目延伸自Bitwarden，bitwarden_rs使用Rust实现了Bitwarden相似的功能，两者均开源。不过Bitwarden需要较多的依赖（如MSSQL），占用内存也比较大，如果是个人或家庭使用，推荐更加轻量的bitwarden_rs，并且bitwarden_rs还可以免费使用Bitwarden的一些高级功能，如附件上传、TOTP等功能。</p>
<h3>安装bitwarden_rs</h3>
<p>作者提供了Docker安装方式，因此我们需要先安装Docker（<strong>注意：OpenVZ虚拟化不支持Docker</strong>），安装Docker方法如下：</p>
<pre>#安装Docker
yum -y install docker
#启动docker
systemctl start docker
#开机自启
systemctl enable docker
</pre>
<p>接下来使用Docker拉取bitwarden_rs镜像并运行</p>
<pre>docker pull bitwardenrs/server:latest
docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest
</pre>
<p>上方使用了80端口，如果您已经安装了WEB服务，可能会导致冲突，可以将bitwarden_rs映射的端口修改为其它，比如8880</p>
<pre>docker run -d --name bitwarden -v /bw-data/:/data/ -p 8880:80 bitwardenrs/server:latest
</pre>
<h3>配置反向代理</h3>
<p>下方是雨辰的nginx反向代理配置，主要是方便使用域名方式访问bitwarden_rs,内容仅供参考，请根据实际情况修改：</p>
<pre><span class="hljs-section">server</span>
    {
    <span class="hljs-attribute">listen</span> <span class="hljs-number">443</span> ssl http2;
  <span class="hljs-comment"># certs sent to the client in SERVER HELLO are concatenated in ssl_certificate</span>
    <span class="hljs-attribute">ssl_certificate</span> /data/ssl/youdomain.com.crt;
    <span class="hljs-attribute">ssl_certificate_key</span> /data/ssl/youdomain.com.key;
    <span class="hljs-attribute">ssl_session_timeout</span> <span class="hljs-number">1d</span>;
    <span class="hljs-attribute">ssl_session_cache</span> shared:SSL:<span class="hljs-number">50m</span>;
    <span class="hljs-attribute">ssl_session_tickets</span> <span class="hljs-literal">off</span>;

    <span class="hljs-comment"># intermediate configuration. tweak to your needs.</span>
    <span class="hljs-attribute">ssl_protocols</span> TLSv1 TLSv1.<span class="hljs-number">1</span> TLSv1.<span class="hljs-number">2</span>;
    <span class="hljs-attribute">ssl_ciphers</span> <span class="hljs-string">'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'</span>;
    <span class="hljs-attribute">ssl_prefer_server_ciphers</span> <span class="hljs-literal">on</span>;

    <span class="hljs-comment"># HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)</span>
    <span class="hljs-attribute">add_header</span> Strict-Transport-Security max-age=<span class="hljs-number">15768000</span>;

    <span class="hljs-comment"># OCSP Stapling ---</span>
    <span class="hljs-comment"># fetch OCSP records from URL in ssl_certificate and cache them</span>
    <span class="hljs-attribute">ssl_stapling</span> <span class="hljs-literal">on</span>;
    <span class="hljs-attribute">ssl_stapling_verify</span> <span class="hljs-literal">on</span>;

    <span class="hljs-attribute">server_name</span>     youdomain.com;
   <span class="hljs-attribute">client_max_body_size</span> <span class="hljs-number">128M</span>;
    <span class="hljs-attribute">location</span> / {
        <span class="hljs-attribute">proxy_set_header</span>  Host  <span class="hljs-string">'youdomain.com'</span>;
        <span class="hljs-attribute">proxy_pass</span> http://127.0.0.1:8880;
        <span class="hljs-attribute">proxy_redirect</span> <span class="hljs-literal">off</span>;
        <span class="hljs-attribute">proxy_set_header</span> X-Real-IP <span class="hljs-variable">$remote_addr</span>;
        <span class="hljs-attribute">proxy_set_header</span> X-Forwarded-For <span class="hljs-variable">$proxy_add_x_forwarded_for</span>;
}
<span class="hljs-attribute">location</span> /notifications/hub {
    <span class="hljs-attribute">proxy_pass</span> http://127.0.0.1:3012;
    <span class="hljs-attribute">proxy_set_header</span> Upgrade <span class="hljs-variable">$http_upgrade</span>;
    <span class="hljs-attribute">proxy_set_header</span> Connection <span class="hljs-string">"upgrade"</span>;
  }

  <span class="hljs-attribute">location</span> /notifications/hub/negotiate {
    <span class="hljs-attribute">proxy_pass</span> http://127.0.0.1:8880;
  }

}</pre>
<p>如果不出意外，访问您的域名<code>https://youdomain.com</code> 就能看到Bitwarden界面。</p>
<p><img decoding="async" class="alignnone size-full wp-image-1732" src="https://p1e.cn/wp-json/cs/v1/1732" width="835" height="656" /></p>
<h3>遇到的一些问题</h3>
<blockquote><p><strong>Google Chrome浏览器无法登录？</strong></p></blockquote>
<p>某些网络浏览器（例如Chrome）不允许在不安全的上下文中使用Web Crypto API。在这种情况下，您可能会收到类似的错误<code>Cannot read property 'importKey'</code>。要解决此问题的办法就是配置https访问。</p>
<blockquote><p>参考了bitwarden_rs配置SMTP，但是邮件发送失败？</p></blockquote>
<p>xiaoz使用的SMTP SSL方式发送邮件，但是未能成功，解决办法是禁用TLS即可：<code>SMTP_EXPLICIT_TLS=true</code></p>
<h3>总结</h3>
<p>bitwarden_rs可以很轻松的实现自建密码管理，Bitwarden提供全平台客户端，使用起来非常方便。相比keepass，Bitwarden拥有更高的颜值和更加方便的管理方式。相比LastPass，Bitwarden是开源的，完全可以自建，不再忍受LastPass糟糕的网络。</p>
<p>如果不想自建的童鞋，Bitwarden也提供在线服务：<a href="https://vault.bitwarden.com/#/" target="_blank" rel="external nofollow noopener noreferrer">https://vault.bitwarden.com/#/</a> ，可以直接注册账号使用。</p>
<ul>
<li>bitwarden_rs项目地址：<a href="https://github.com/dani-garcia/bitwarden_rs" target="_blank" rel="external nofollow noopener noreferrer">https://github.com/dani-garcia/bitwarden_rs</a></li>
<li>此文部分内容参考了：<a href="https://github.com/dani-garcia/bitwarden_rs/wiki" target="_blank" rel="external nofollow noopener noreferrer">bitwarden_rs文档</a></li>
<li>Bitwarden官方地址：<a href="https://bitwarden.com/" target="_blank" rel="external nofollow noopener noreferrer">https://bitwarden.com/</a></li>
</ul>
<div></div>]]></content:encoded>
					
					<wfw:commentRss>https://p1e.cn/html/1730.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
