An efficient procedure to compute strict upper and lower bounds for the exact collapse multiplier in limit analysis is presented. The approach consists of two main steps. First, the continuous problem, under the form of the static principle of limit analysis, is discretized twice (one per bound) using particularly chosen finite element spaces for the stresses and velocities that guarantee the attainment of an upper or a lower bound. The second step consists of solving the resulting discrete nonlinear optimization problems. Towards this end, they are reformulated as second-order cone programs, which allows for the use of primal-dual interior point methods that optimally exploit the convexity and duality properties of the limit analysis model. To benefit from the fact that collapse mechanisms are typically highly localized, a novel method for adaptive meshing is introduced based on decomposing the total bound gap as the sum of positive elemental contributions from each element in the mesh. Additionally, stand-alone computational certificates that allow the bounds to be verified independently, without recourse to the original computer program, are also provided. The efficiency of the methodology is illustrated with applications in plane stress and plane strain, demonstrating that it can be used in complex, realistic problems.