kozo/cryptenv
Composer 安装命令:
composer require kozo/cryptenv
包简介
CakePHP plugin for encrypting and decrypting environment files using XChaCha20-Poly1305
README 文档
README
CakePHP用の環境変数ファイル暗号化・復号化プラグインです。
特徴
- XChaCha20-Poly1305 (libsodium) を使用した安全な暗号化
- Base64エンコードされたキーのサポート
- 複数の環境ファイル (.env.production, .env.staging など) のサポート
- CakePHPのコマンドラインインターフェースとの統合
要件
- CakePHP 5.x
- PHP 8.1以上
- libsodium 拡張 (通常はPHP 7.2以降でデフォルトで有効)
インストール
Composerを使用してプラグインをインストールします:
composer require kozo/cryptenv
プラグインを有効化するには、src/Application.php の bootstrap() メソッドに以下を追加してください:
$this->addPlugin('Cryptenv');
または、CakePHPのプラグインコマンドを使用して有効化できます:
bin/cake plugin load Cryptenv
使用方法
暗号化キーの生成
まず、暗号化に使用する32バイトのランダムキーを生成します:
php -r "echo 'base64:' . base64_encode(random_bytes(32)) . PHP_EOL;"
このコマンドは base64: プレフィックス付きのキーを出力します。このキーを安全に保管してください。
環境ファイルの暗号化
対話モード(キーなしで実行)
キーを指定せずに実行すると、対話モードで新しいキーを生成できます:
bin/cake env encrypt --env production
対話モードでは以下の選択肢が表示されます:
- 新しい暗号化キーを生成するか確認
- 生成されたキーをすぐに使用して暗号化するか確認
キーを指定して暗号化
デフォルトの .env ファイルを暗号化:
bin/cake env encrypt --key base64:YOUR_BASE64_ENCODED_KEY
特定の環境ファイルを暗号化:
bin/cake env encrypt --key base64:YOUR_BASE64_ENCODED_KEY --env production
オプション:
--key, -k: 暗号化キー(省略時は対話モード)--env, -e: 環境名 (例: production, staging)--force, -f: 既存の暗号化ファイルを上書き--prune, -p: 暗号化後に元のファイルを削除
環境ファイルの復号化
暗号化されたファイルを復号化:
bin/cake env decrypt --key base64:YOUR_BASE64_ENCODED_KEY
特定の環境ファイルを復号化:
bin/cake env decrypt --key base64:YOUR_BASE64_ENCODED_KEY --env production
カスタムパスとファイル名で復号化:
bin/cake env decrypt --key base64:YOUR_BASE64_ENCODED_KEY --path /path/to/output --filename .env.local
オプション:
--key, -k: 復号化キー (必須)--env, -e: 環境名 (例: production, staging)--force, -f: 既存のファイルを上書き--path: 復号化ファイルの出力先パス--filename: 復号化ファイルのファイル名
使用例
本番環境への展開ワークフロー
-
開発環境で環境ファイルを暗号化:
# キーを生成 php -r "echo 'base64:' . base64_encode(random_bytes(32)) . PHP_EOL;" > encryption_key.txt # 本番用の .env.production を暗号化 bin/cake env encrypt --key $(cat encryption_key.txt) --env production
-
暗号化されたファイルをバージョン管理にコミット:
git add config/.env.production.encrypted git commit -m "Add encrypted production environment file" -
本番環境で復号化:
# 環境変数またはシークレット管理システムからキーを取得 bin/cake env decrypt --key $ENCRYPTION_KEY --env production
複数環境の管理
# ステージング環境を暗号化 bin/cake env encrypt --key base64:STAGING_KEY --env staging # 本番環境を暗号化 bin/cake env encrypt --key base64:PRODUCTION_KEY --env production # それぞれを復号化 bin/cake env decrypt --key base64:STAGING_KEY --env staging bin/cake env decrypt --key base64:PRODUCTION_KEY --env production
セキュリティに関する注意事項
-
暗号化キーを安全に保管: 暗号化キーは絶対にバージョン管理システムにコミットしないでください。環境変数やシークレット管理システム (AWS Secrets Manager, HashiCorp Vault など) を使用してください。
-
暗号化されていないファイルを .gitignore に追加:
config/.env config/.env.* !config/.env.*.encrypted !config/.env.example -
本番環境でのキーの管理: CI/CDパイプラインやデプロイメントスクリプトで暗号化キーを環境変数として設定してください。
技術詳細
暗号化アルゴリズム
このプラグインは XChaCha20-Poly1305 (AEAD) を使用しています:
- XChaCha20: ストリーム暗号 (ChaCha20の拡張版で、より大きなnonceをサポート)
- Poly1305: メッセージ認証コード (MAC)
- AEAD: 認証付き暗号化により、データの機密性と完全性を保証
ファイル形式
暗号化されたファイルは以下の形式で保存されます:
base64_encode(nonce + ciphertext)
- nonce: 24バイトのランダムな値 (SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES)
- ciphertext: 暗号化されたデータ + 認証タグ
トラブルシューティング
"The encryption key must be 32 bytes" エラー
暗号化キーは正確に32バイトである必要があります。base64: プレフィックスを使用する場合、プレフィックスの後の部分をbase64デコードした結果が32バイトである必要があります。
"Decryption failed" エラー
- 正しい暗号化キーを使用しているか確認してください
- 暗号化されたファイルが破損していないか確認してください
- 暗号化と復号化で同じキーを使用しているか確認してください
ライセンス
このプラグインはMITライセンスの下で公開されています。
参考
このプラグインはLaravelの環境変数暗号化機能にインスパイアされています:
kozo/cryptenv 适用场景与选型建议
kozo/cryptenv 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 541 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 10 月 10 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「plugin」 「cakephp」 「encryption」 「environment」 「env」 「sodium」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 kozo/cryptenv 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kozo/cryptenv 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 kozo/cryptenv 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
CakePHP 4.x AdminLTE Theme.
A simple PHP class to encrypt a string and decrypt an encrypted string
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
Encryption with AES-256 and HMAC-SHA256
Allows installation of Laravel where the PHP Mcrypt extension is not available. Provides encryption using OpenSSL, or by disabling encryption entierly.
High-level cryptographic primitives and security utilities for Maatify systems including password hashing, reversible encryption, HKDF key derivation, and key rotation.
统计信息
- 总下载量: 541
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 32
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-10